一直以来总是讲函数,我也曾经说过,讲函数也是在讲VBA的编程思路,相信很多的朋友通过函数的学习收获很多,可以解决工作中的很多问题了。今天带大家详细地理解一下VBA,总在提VBA,那么VBA到底是什么呢?可以解决什么问题呢?都面向哪些人群呢?下面就讲这些问题。
一 VBA是什么
VBA是Visual Basic for Application的缩写,通俗说就是用VB对程序进行控制,使用户可以自行去定义属于自己需求的软件成为可能性。它主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程序视觉化的Basic 脚本。该语言于1993年由微软公司开发,实际上VBA是寄生于VB应用程序的版本。微软在1994年发行的Excel5.0版本中,即具备了VBA的功能。
上面谈到VBA是寄生于VB的。那么两者有什么区别呢?
1 VB设计用于创建标准的应用程序,而VBA是使已用的应用程序如EXCEL自动化。
2 VB具有自己的开发环境,而VBA必须寄生于已用的应用程序上。
3 要运行VBA开发的应用程序,必须依赖它的父应用程序。
尽管存在这些不同,VB和VBA在结构上仍然十分相似,事实上,如果你已经了解了VB,会发现学习VBA非常快,相应的,学完VBA会给学习VB打下坚实的基础。
综上,VBA就是可以使现有的应用程序实现自动化的手段,并可以通过自定义的方法创建你需要的问题解决方案。
第二 VBA都可以用来做什么呢?
也不用再讲更多的高大上的条条框框,对于职场中的你我,主要可以实现如下的作用:
1 自动化实现复杂的数据处理,我把这个阶段作为VBA的初级阶段。下面还是以一个批量查找的程序为例:下面的程序实现了批量的不同工作表的查找。
Sub KK()
Sheets("SHEET1").Select
i = 2
Do While Cells(i, 1) <> ""
Cells(i, 1).Select
TT = Cells(i, 1)
Cells(i, 2) = ""
Set FJX = Sheets("A").Range("A1:A" & Sheets("A").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)
If Not FJX Is Nothing Then Cells(i, 2) = Sheets("A").Cells(FJX.Row, 2)
Set FJX = Sheets("B").Range("A1:A" & Sheets("B").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)
If Not FJX Is Nothing Then Cells(i, 2) = Sheets("B").Cells(FJX.Row, 2)
Set FJX = Sheets("C").Range("A1:A" & Sheets("C").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)
If Not FJX Is Nothing Then Cells(i, 2) = Sheets("C").Cells(FJX.Row, 2)
Set FJX = Sheets("D").Range("A1:A" & Sheets("D").Range("A1").End(xlDown).Row).Find(TT, AFTER:=[A1], LOOKAT:=xlWhole)
If Not FJX Is Nothing Then Cells(i, 2) = Sheets("D").Cells(FJX.Row, 2)
i = i + 1
Set FJX = Nothing
Loop
End Sub
2 与数据库建立连接实现查、删、改、增等基础sql操作,以及事件调用、数据表创建等复杂操作。这是VBA的中级阶段。
关于数据库相连接的问题,我在之前的文章中已经讲过,不再多说了,那个代码可以作为是通用代码的。
3制作窗体实现交互,人机的对话。这个才是VBA的高级阶段。
这个阶段是建立在1,2基础上的,其实,VBA的窗体设计不是很完美,不如VB,我建议大家可以把EXCEL作为一个开发的平台来对应,这种思路更能体现VBA的价值,在EXCEL中有大量的表格可以利用的。
第三哪些人群需要VBA呢?
这也就是我要讲VBA面向的对象,你不必是专业的程序员,其实专业的程序员不一定能写出与实际工作结合完美的程序。只要你多来我的这个平台,每天学点,每天学点,日积月累肯定会有回报,放正心态,宿值得本,收获也会多多。
1.统计工作。
这类工作的特点:劳动强度大,重复性高的工作,而且没有什么技术含量,比如月报,周报等。这类完全可以用VBA来解决。开发一个很小的程序,你的月报表,周报表可以在几秒钟内完成,只要基础数据正确,那么这类报表不存在错误的问题,可以给统计人员节省大量的时间。
2.细致的管理工作。
这类工作的特点是基础数据庞大,要多么精细就可以做到多么精细。如采购的安排,可以以周为单位,也可以以天为单位,还可以以0.5天为单位;生产环节的控制,可以控制到每个批次,每批产品,每个机床;销售进度的控制,可以控制每笔发货,每笔订单的进度等等。