来吧!带你玩转Excel VBA
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 自动化操作的价值

价值无疑是动力的源泉,并且价值和动力在整体的态势中必定呈现正比的规律。学习VBA之前,有必要了解VBA对工作能带来多少价值,是否值得投入几个月的精力去学习。

1.1.1 自动化操作的必要性

自动化操作蕴含以下两项内容。

多个操作步骤一次性完成

“选择A1:B11区域,然后创建圆环图表,并对图表区设置阴影、圆角”。完成此要求需要单击鼠标10次以上,如果使用宏或者VBA则能一键完成,大幅提升工作效率。

打开光盘中的文件“1-1自动生成图表且设置阴影圆角.xlsm”,单击“一键生成图表”按钮,可以实现以上所有步骤的同等效果,产生的图表如图1.1所示。

图1.1 一键创建图表且设置其格式

在本例的文件中使用了VBA程序,工作表中的“一键生成图表”按钮已关联到该程序,单击该按钮时可以调用程序代码,程序依照设定的流程执行代码中的每个操作。虽然代码本身包含多个步骤,但对于用户而言仅单击了一次鼠标,这就是自动化操作的价值所在。

注意:20 世纪90 年代曾经宏病毒泛滥,为了确保文件安全,微软在升级Office时将Excel设置为默认禁止宏运行,每次打开带有宏代码的工作簿时都会禁止运行宏,并且同时产生安全警告“宏已被禁用”,只有单击“启用内容”按钮后才可以使用宏。

在学习Excel VBA期间,为了使用方便,应将“宏设置”修改为“启用所有宏”。方法是打开“Excel选项”对话框,并进入信任中心,将其设置选项由“禁用所有宏,并发出通知”修改为“启用所有宏”,操作步骤如图1.2所示。

图1.2 启用所有宏

重复性工作只操作一次

如果某些操作需要每天重复执行,那么最理想的方式是第一次操作时将所有工作设置完善,以后通过快捷键或者单击按钮自动执行所需重复的所有步骤。

例如,要求每月末打开各部门上传到服务器的共享文件夹中的100 个工作簿,将它们的所有数据合并到一个工作簿中。如果逐个打开工作簿,然后逐个复制工作簿中的所有工作表,此操作既烦琐又效率低下,如果改用自动化操作,则在两三秒内完成。

再如将图1.3中的工资明细表转换成工资条,如果手工插入空行并复制标题从而生成工资条,那么表中有1000人则需要反复操作1000次,不仅操作繁多,且易出错。

图1.3 工资表与工资条对比

如果采用VBA,将上述功能自动化执行,则只需轻轻单击鼠标一次,以往可能需要半小时或者半天的工作在3秒内即可完成,而且即使多次调用VBA命令,其所操作的结果也能确保格式一致,这正是VBA的魅力所在。

本例案例文件请参考:..\ 第1章\ 1-2一键生成工资条.xlsm

自动化操作对于制表者而言不仅仅在于速度更快,能节约操作时间,它同时还能避免失误。工作中操作的步骤越多,在重复同样动作时越容易心情烦躁从而导致其中某个操作失误,而一键完成操作则可以避免这种失误。另外它还能统一多个运算结果的格式,例如用宏对数据创建图表,不管操作几十次或者几万次生成的图表都是一模一样的,包括大小、位置、颜色、阴影效果等,而每天手工操作一次,连续10天所创建的10个图表则可能产生多种效果,甚至可能忘记了其中某个步骤,从而无法满足需求。

基于以上两点,让操作自动化对于工作量大的办公文员来说有着举足轻重的作用,即使工作量不大也同样有此需求,它能确保多次操作的一致性,以及避免失误。只要在设计代码时经过多次测试,完善代码后再投入使用,它会给用户带来无尽的便利。

1.1.2 实现操作自动化的两个途径

Excel允许使用宏或者VBA来实现操作自动化。

Excel的宏是微软早期提供的一种用于强化Excel的工具,它包括宏函数和宏过程。宏函数一般在宏表中使用,或者定义为名称在普通工作表中使用;而宏过程则通过录制宏,然后使用【Alt+F8】组合键调用宏两个步骤发挥其功能。

宏的优点是不需要学习任何编程的理论,不需要任何基础就可以使用宏代码完成重复性工作;宏的缺点是相对于VBA来说,它的通用性不够好,灵活性不足。正因为如此,微软在1993年发布Excel 5时开始大力推广VBA来替代宏。

VBA是宏语言的升级版,操作上更复杂,需要懂得编程的理论,具备修改代码的功底,否则无法驾驭VBA,无法让代码发挥其潜能。

形象地说:宏代码通过录制产生,通过使用【Alt+F8】组合键或者单击按钮调用,它是VBA的初级阶段。当仅限于录制与调用时,我们通常称之为使用宏,而懂得修改、调试代码时,我们则称之为使用VBA。其实使用宏与VBA都是利用代码来工作,并没有严格的区分。

当使用宏实现操作自动化时,有一些局限性,因为宏总是通过录制和【Alt+F8】组合键调用的方式来使用,而Excel只能录制部分操作,这直接导致了某些操作不能转化为批量执行;VBA可以把Excel的任何操作都转换为代码,所以不存在功能上的局限性,但是学习VBA需要比学习录制宏和调用宏花费更多的精力。所以两者皆优劣势并存,读者可以按需选择。在接下来的两个小节中,将分别介绍如何通过宏和VBA实现自动化操作,全方位提升工作效率。