宏 与VBA 的基本概念
就像用摄像机录下来的视频,在Excel里,宏就是用户使用 宏录制器 录下的一组操作
录制宏
【开发工具】选项卡需要再Excel设置中启用
开发工具选项卡有【宏】和【录制宏】按钮,【宏】可以查看当前已存在的宏,录制宏则可以录制操作,录制宏启动后,还有个选项是【使用相对引用】
使用相对引用:Excel会记录相对位置的引用,这以为这“宏”的操作会基于活动单元格的位置,例如,如果你在录制宏时从当前单元格向右移动一列并输入数据,那么运行这个宏时,它将从活动单元格开始向右移动一列,而不管活动单元格的具体位置。
如果不使用相对引用,Excel会记录绝对位置的引用,这样“宏”的操作会基于特定的单元格,例如,如果你在录制宏时在单元格B2中输入数据,那么无论活动单元格在哪里,运行这个宏时,数据都会被输入到单元格B2。
执行宏
ALT+F8快捷键能快速打开“宏”
【宏】里面能找到当前所有的宏,可以选择指定的宏后点击“执行”按钮,也可以点击“选项”为宏设置快捷键
注意:给“宏”设置的快捷键会覆盖Excel默认的快捷键
也可以创建一个“按钮”来运行宏,可以在【开发工具】下的【插入】,在Excel页面中绘制一个按钮,然后右键按钮,就能找到【指定宏】
甚至可以给宏指定给自定义工具栏按钮
有时候带有“宏”的EXCEL会弹出风险提示,甚至无法运行,需要将Excel安全相关的设置降到最低
什么是VBA
录制宏的功能也很有限,自主编写代码能满足更多需求。
VBA(Visual Basic for Application)是一种编程语言,是建立在office中的一种应用程序开发工具,可以利用VBA有效地扩展Excel的功能
宏和VBA是什么关系
VBA是变成语言,宏是VBA代码保存下来的程序。
录制的宏只是VBA里最简单的程序,宏可能存在许多缺陷,比如无法进行判断和循环,不能显示用户窗体,不能进行人机交互等等…
VBA可以实现更加的自动化和智能化
程序保存在哪里
录制的宏以代码的形式保存在模块里,
开发工具-【宏】中能找到当前可使用的“宏”,选中宏后点击【编辑】即可查看代码
程序里都有什么
代码:VBA的程序由代码组成,可以通过录制宏或自主编写得到VBA代码
过程:用VBA代码把完成一个任务的所有操作保存起来就是一个VBA过程,一个过程可以有任意多的操作,可以有任意长的代码,本书仅介绍Sub过程和Function过程
模块:模块是保存过程的地方,一个模块可以保存多个不同类型的过程
对象:用代码操作和控制的东西即为对象,如工作簿、工作表、单元格、图片、图表、透视表等
对象的属性:每个对象都有属性,属性是对象包含的内容或特点
从对象的属性,可以了解该对象具有的性质和特点,如字体的“颜色”就是字体的“属性”,按钮的“宽度”就是按钮的属性,
从该对象的属性还可以了解到这个对象包含了哪些其他的对象,如Sheet工作表的A1单元格,A1单元格就是Sheet1工作表的属性;A1单元格的内容,内容就是A1单元格的属性
在书写时,对象和属性之间用点【.】连接,属性在后,比如A1单元格的内容,用汉字表达为【A1.内容】,写成代码可以表示为【Range(“A1”).Value】
对象的某些属性也是对象,属性和对象是相对而言的。
对象的方法:每个对象都有方法,方法是指在对象上执行的某个动作,如选中A1单元格,“选中”是在A1单元格这个对象上执行的操作,就是A1单元格的方法。
对象和方法之间也用 点【.】进行连接,对象在前,如选中A1单元格写成代码可以是【Range(“A1”).Select】
关键字:关键字是VBA中的保留字或符号,如语句名称、函数名称、运算符等都是关键字
VBA的编程环境–VBE
打开VBE编辑器
要进入VBE,首先必须启动EXCEL程序,进入Excel后,要切换到VBE窗口有多个常用的方法
方法1:按ALT+F11组合键
方法2:【开发工具】-【Visual Basic】
方法3:右键工作表标签,在菜单中选择【查看代码】
方法4:单击【控件工具箱】中的“查看代码”按钮
方法5:利用【控件工具箱】新建一个ActiveX控件,双击控件打开VBE窗口
主窗口
进入VBE后,首先看到的就是VBE的主窗口,主窗口通常由:工程资源管理器、属性窗口、代码窗口、立即窗口、菜单栏 和 工具栏 组成
菜单栏:包含了VBE中各种组件的命令
工具栏:默认在【菜单栏】的下面
工程资源管理器:可以看到所有打开的Excel工作簿和已加载的宏,一个Excel工作簿就是一个工程,工程名称为“VBA Project”(工作簿名称)。
工程资源管理器中最多可以显示工程里的4类对象,即Excel对象(包括Sheet对象和This Workbook对象)、窗体对象、模块对象和类模块对象
但不是所有的工程里都包含这类对象,新建的Excel文件只有Excel类对象
属性窗口:可以查看或设置对象的属性
代码窗口:由对象列表框、过程列表框、边界标识条、代码边去、过程分隔线和视图按钮几部分组成
代码窗口是编辑和显示VBA代码的地方,工程资源管理器中的每个对象都拥有自己的“代码窗口”,如果想将VBA程序写在某个对象里,首先应在“工程资源管理器”中双击以激活它的“代码窗口”,反过来,如果想查看某个对象里保存有哪些程序,也必须在“工程资源管理器”中双击双击以激活它的“代码窗口”。
立即窗口:如果打开VBE后没有找到“立即窗口”,可以通过“视图”菜单来开启,在 立即窗口 中直接输入命令,回车后将显示命令执行后的结果,它可以用于调试和测试代码,你可以在这里立即执行VBA代码片段、查看变量的值、调用函数和子程序,以及设置和更改变量的值,而不必运行整个宏程序
试写一个简单的VBA程序
添加或删除模块
因为VBA程序一般保存在模块里,所以在编写程序前,应该先添加一个模块来保存它
可以在菜单栏中的【插入】,来插入模块,也可以右键对象来插入模块
如果要删除模块,可以选中模块后,在【文件】菜单下 移除模块,也可以右键该模块直接【移除】
动手编写程序
在“代码”窗口中添加一个空“过程”:双击模块激活代码窗口,菜单栏【插入】——【过程】,填写“过程”名称并确定,
也可以直接在代码窗口中输入下面的代码:
Public Sub mysub()
End Sub
关于以上代码的详细解释:
Public:Public关键字表示这个子程序的访问级别是公共级别,意味着这个子程序可以被VBA项目中的其它模块或程序所访问和调用,,如果改成Private,则该子程序只能在声明它的模块内访问
Sub:Sub是子程序的声明关键字,表示你在定义一个子程序,子程序是一个执行特定任务的代码块
mysub:在上面的代码中是指定的子程序的名称(定义名称时需要遵守一定的规范,比如不能是纯数字、不能包含空格等)
():表示这个子程序的参数列表,在上面的示例中,括号是空的,表示没有参数
End Sub:子程序的结束标记
1 thought on “1.了解 宏 与 VBA 的基本概念”