转自:Excel之家ExcelHome

在我们的工作中,经常需要手工完成一些有规律的、重复性的任务,或者处理一系列的固定工作,利用VBA就可以对数据进行更高级的处理,实现数据处理的自动化,从而省去简单重复的工作。


说到VBA,不得不说另一个与它有密切关系的工具:宏。Office中的办公组件都支持VBA和宏。


VBA是一种内置在Excel中的编程语言,可以用来编写程序代码,二次开发系统本身所不具备的功能;


宏是一种用VBA语言编写的运算过程,是录制的程序


在实际工作中,可能每天都要打印上千张发票、统计销售业绩等,要完成同样的工作,既可以用VBA编写代码实现,又可以通过录制宏来实现。录制的宏其实就是一堆VBA指令,并且可以通过VBA来修改,但是有些操作是不能通过录制宏来实现的。


录制的宏可能很长,效率很低,而经过优化的VBA代码简洁,效率更高,VBA能够实现宏所能实现的全部功能。


在使用宏和VBA时需要在【开发工具】选项卡下单击相关按钮完成工作,如果在主选项卡区域没有【开发工具】选项卡,可以选择【文件】→【选项】选项,在弹出的【Excel选项】对话框中进行设置。在【Excel选项】对话框左侧选择【自定义功能区】选项卡,选中【主选项卡】下的【开发工具】复选框,单击【确定】按钮保存设置,如下图所示,即可在主界面上显示【开发工具】选项卡。

常用的vba怎么用(懒人神器VBA越用越爽)(1)

下面以任务驱动的方式介绍如何用宏和VBA解决实际问题。


例如,“超市商品每日销售表”已知单价和销售数量,计算每件商品的销售金额。


1



用宏工作,两步可以解决问题:录制宏、运行宏。录制宏就是把完成任务的过程操作一遍并录制下来。


步骤01 单击H2单元格,首先要开启【开发工具】选项卡【代码】组中的【使用相对引用】功能,这样以后在当前录制过程中未处理过的单元格区域也能按照目标单元格与数据源单元格的相对位置计算销售金额,如下图所示。

常用的vba怎么用(懒人神器VBA越用越爽)(2)

步骤02 然后单击【开发工具】选项卡【控件】组中的【插入】按钮,在弹出的下拉列表的【表单控件】选项区域中选中第一个按钮控件,如下图所示。

常用的vba怎么用(懒人神器VBA越用越爽)(3)

步骤03 在H列右边空白区域拖曳鼠标画出一个【按钮】,松开鼠标后弹出【指定宏】对话框,修改【宏名】为【计算销售金额】,单击【录制】按钮,然后单击【确定】按钮开始录制操作过程,如下图所示。

常用的vba怎么用(懒人神器VBA越用越爽)(4)

步骤04 操作过程结束后,选择【开发工具】选项卡下【代码】组中的【停止录制】按钮,录制结束,如下图所示。


常用的vba怎么用(懒人神器VBA越用越爽)(5)

步骤05 如果想查看录制过程中自动生成的代码,在【按钮3】控件上右击,单击【开发工具】选项卡【控件】组中的【查看代码】按钮,打开VBA代码窗口,如下图所示。


常用的vba怎么用(懒人神器VBA越用越爽)(6)

宏录制后就可以执行宏了,回到工作表中,把H2:H14单元格区域的值删除掉,然后重新选中H2:H14单元格区域,单击【按钮3】按钮,系统自动计算并填充销售金额的值。


如果从第15行开始记录当天的商品销售情况,系统还能不能自动计算并填充销售金额的值呢?通过试验发现当选中H15单元格,单击【按钮3】按钮后,能自动处理,但是填充了录制宏时处理的H2:H14单元格区域的销售金额,这不是想要的结果,但宏代码是可以在代码窗口中修改的。如果只想求出有商品销售记录的那行销售金额的值并填充,没有销售记录的空行不显示“0”怎么办呢?下面的“VBA”部分将介绍如何修改代码以达到预期效果。


2

VBA



VBA的初学者往往是从录制宏后查看代码、一点点修改代码开始学习的。


为了实现上述功能,可以利用掌握的函数知识修改宏录制时自动生成的代码。


例如,把原来的“Range("A1:A13")”改为“Range("A1:A100")”,这样计算区域可以扩大到1~100行;


不想显示空行的销售金额“0”,可以把原来的“ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"”


改为“ActiveCell.FormulaR1C1 = "=if(RC[-2]*RC[-1]=0,clean(RC[-1]),RC[-2]*RC[-1])"”。修改后保存,关闭代码窗口,如下图所示。

常用的vba怎么用(懒人神器VBA越用越爽)(7)

如果不从录制宏开始,怎么直接写VBA代码、查看代码、运行代码呢?


首先,要放一个或若干个触发VBA代码的控件在工作表中。单击【开发工具】选项卡下【控 件】组中的【插入】下拉按钮,在弹出的下拉列表的【表单控件】选项区域中选择需要的控件,然后拖曳鼠标在工作表中规划好的位置上画出该控件。


其次,给控件添加代码。右击选中该控件,单击【开发工具】选项卡下【代码】组中的【Visual Basic】按钮,打开代码窗口。在“Sub 控件名 … End Sub”结构中输入符合VBA语法规则的指令代码,如下图所示,保存代码,关闭代码窗口回到工作表中。

常用的vba怎么用(懒人神器VBA越用越爽)(8)

最后,执行VBA代码。只要单击相应控件就能自动完成事先设计好的功能。如果要修改和查看代码,利用【开发工具】选项卡下的【查看代码】和【Visual Basic】按钮都可以重新打开代码窗口。


学习VBA要学很多内容,如VBA编辑器、语法规则、数据类型、程序结构的控制、过程和函数、常见对象等。熟练掌握VBA后,小能处理用一般函数等现有工具无法解决的问题,大能设计一个管理系统。


,