2.2 VBA能做什么
VBA是一门程序语言,工作中VBA的常见用途是什么?本节进行讨论。
2.2.1 VBA用途
可以肯定地说,VBA可以完成Excel常规功能可以完成的任何功能。但是事实上不可能有人用VBA来处理所有任务,而是有选择性、有针对性地使用VBA。
概括地说,VBA主要用在以下几方面。
● 处理大型运算
Excel内置的函数嵌套也可以完成很多大型的数据运算,然而很多易失性函数会造成Excel程序启动缓慢,特别是数组公式,用VBA来处理数据运算则可以解决这个问题。
● 工作簿/工作表拆分/合并
对于工作簿/工作表按条件拆分成多个工作表的任务,手工完成效率极低,而VBA则可以轻松完成,单击鼠标即可。也有部分企业需要每月汇总下属分公司的报表,多报表的汇总人工操作显然是事倍功半,而VBA插件则可一劳永逸。
● 处理重复性任务
针对某些每天都需要进行且完全复重不变的任务,利用VBA仅需要第一次手工操作、编写代码,后续的所有任务全都自动执行。它的优势不仅在于速度快,而且更准确。人工操作的步骤越多,出错的机率越大。
● 简化内置公式
以第一章的公式为例,以下两个公式都可以从身份证号码中获取年龄:
=DATEIF(DATE(MID(B3,7,4-(LEN(B3)=15)*2), MID(B3,11-(LEN(B3)=15)*2,2), MID(B3,1 3-(LEN(B3)=15)*2,2)), NOW(), "Y")
=SFZ(B3, "NL")
很显然,第二个公式输入效率更高,且更易让用户理解。其第一参数为引用的身份证号,第二参数“NL”表示年龄。
● 定制程序界面
对于某些喜好个性化的用户来说,Excel是支持全面定制的程序。利用VBA可以将Excel界面定制成更具有个性化的程序。类似于QQ换肤、播放器换肤等等。Excel也可以通过VBA使用程序标题、状态栏、菜单个性化,例如产生滚动字幕,将个人照片、邮箱地址加到菜单栏等,如图2.1所示。
图2.1 定制个性界面
● 开发受保护的专业程序
网络上有很多Excel版的人事系统、学生成绩管理系统、考试座次安排系统等,利用VBA可以编写很专业的程序,且能对其进行保护,以确保开发者的利益。即使是纯公式设计的报表,有时也需要借用VBA来设计程序、注册功能或者登录界面等。
2.2.2 VBA主要用户
根据VBA的特点,使用VBA主要有两类对象。
其中最主要的是开发者就是终端用户,即编写代码给自己用的业余程序员。而且VBA也是所有程序中拥有业余程序员最多的一类程序。利用VBA解决一个临时问题,或者处理某一个具体的重复性任务,是大家使用VBA最多的原因。只有少数用户不是为解决当前问题而是基于兴趣编写一些通用型插件,可以解决很多类似问题。
注意
普通宏程序和插件最主要的一个区别是:编写普通宏程序只为针对当前遇到的一个具体问题而编写,当前问题解决后,该程序也不再有存在的价值;而编写插件则通过针对具有大众性质的问题,例如工资条设计,很多企业、事业单位都需要,那么它的生存周期是很长的,用户也是不固定的,在编写时也就会产生更多的自定义选项留给终端用户。所以编写插件和自编自用型宏程序在困难度上有较大区别。
VBA用户通常用于两个基本条件:其一为工作中某些任务利用常规方式处理太烦琐,需要VBA来简化工作;其二为因VBA兴趣而研究。笔者一直坚持的一种观点是:对VBA保持持续的兴趣是学好VBA很重要的条件。
另外一类VBA用户即为专业的VBA程序员,专为别人定制程序。这类用户除了需要熟悉VBA语法外,还需要对Excel各项操作有较多的经验。也有部分人员本身就是某个行业的资深主管、兼职程序员。例如一个精通VBA的财务主管,他开发的财务类VBA程序一定比只精通VBA不懂财务的专业程序员开发的程序更专业,或者说更具有易用性。