一、认识VBE
我们常说的VBA,其实是Visual Basic for Application(用于应用程序的 visual basic)的简写;而VBE的全称是Visual Basic Editor,是VBA的容器,用于存放VBA。我们编写代码的过程,就像人与计算机说话(下达指令),只有计算机能够“听懂我们说的话”,才能执行我们给它下达的指令,那么VBE就承载了这个“编译”的过程,所以我们可以理解为VBE就是Excel中VBA的编译器。
其实所有的计算机语言,如JAVA、Python都有自己的编译器,就像一个翻译员一样,将我们指定的命令代码,让计算机能够看懂,能够执行。
二、打开VBE的三种方式
1.在功能区的“开发工具”中打开VBE界面
很多同学的Excel功能区中都是没有“开发工具”选项的,我们可以通过“选项”中的“自定义功能区”,调用出这个功能。
然后选择“开发工具”——Visual Basic功能键,就可以打开VBE界面。
2.在工作表标签上单击鼠标右键,打开菜单栏
在弹出的菜单中,选择“查看代码”,也可以打开VBE界面。
3.ALT+F11组合键打开
这是最常用的一种打开VBE界面的方式。
注意:无论你使用何种方式打开VBE界面,都要记得,要打开某个工作薄之后,才可以使用VBE,毕竟EXCEL文件才是VBE的载体。
三、熟悉VBE界面的布局和初步调试
我们以任何一种方式打开VBE界面后,结构如下:
当然,你打开的VBE界面肯定不是这个样子的,如果你也想调出这些窗口,就让我们先从菜单栏开始介绍VBE界面的主要功能吧。
1.菜单栏
菜单栏包含了绝大部分的VBE界面的操作,信息量也比较大,我们主要从以下几方面介绍一下:
1)调出窗口:点击工具栏——视图,里面就能显示出所有的窗口。
2)代码调试:点击菜单栏——调试,可以看到日常编写VBA代码后,如果要调试代码的运行,我们就需要使用这里的调试功能,作者E图表述平时使用的是“逐语句”和“切换断点”,而在菜单栏的二级菜单中也显示了对应的快捷键:F8和F9。
3)对于VBE的设置,我们可以在菜单栏的工具菜单中,通过“选项”里面的“编辑器格式”功能,对你的VBE操作界面设置个性化的版面;也可以通过“VBAProject属性”中的“保护”功能,对你写过的代码进行加密保护。
以上是菜单栏的一些常用内容。
2.工具栏
工具栏中的功能,是微软为了用户使用方便,将菜单栏中的一些常用操作图表罗列出来,制成快速按键而已,我们首先看看工具栏的调用。
当你初次使用VBE的时候,默认情况一般只有“标准”工具栏,我们可以在工具栏的右侧空白处,点击鼠标右键,在弹出的菜单中选择需要的工具栏“挑勾”,然后拖拽到你需要的位置即可,如下演示:
在这么多的工具栏中,同学们也没有必要把时间都花费在研究功能上,作者给大家列出几个比较常用的吧,如下:
1)保存,Ctrl+S快捷键;
2)撤回,Ctrl+Z和Ctrl+Y快捷键;
3)运行过程。写出一段代码后,可以点此运行代码查看结果或调试,快捷键是F5;
4)缩进。就像Word一样,代码都是有层级的,我们以前发出的代码,一般都是需要体现出代码的层级,比如少了“结束语句”的时候,可以快速查询纠错。一般作者都是点两下空格作为缩进,也可以使用Tab键缩进,缩进的长度可以在选项中设置;
5)注释块。相当于工作表中的批注,起到说明备忘的效果。如果我们编写了一段比较复杂的代码,时间一长,有可能忘记了代码设置的思路,所以注释块可以起到帮助我们回忆的作用。更快捷输入的方式是在需要添加注释的字符串前,直接加一个英文状态下的单引号即可。
3.工程资源管理器
这是存放对象的容器,默认情况下,包含了Sheet对象、ThisWorkbook对象,我们还可以在这里添加“窗体”“模块”和“类模块”对象,添加方式如下:
4.属性窗口
如果要学习VBA,那么同学们一定要有一个思想准备,VBA对象的属性虽不是多如牛毛,但却很少有人能记住所有的属性,甚至十分之一都记不住。这里我们可以对选定的对象进行一些常规的格式上的设置,例如对下面某个工作表的设置:
这个设置如果写成VBA代码,则如下:
Sub 代码1()
With Sheets(3)
.Name = "工作表1"
.Visible = 0
End With
End Sub
发现没有,代码中的NAME和VISIBLE属性,和刚才在属性窗口中设置的是同样的写法,是不是对学习对象属性很有帮助。
5.代码窗口
这个窗口是承载所有代码编写的地方,选择不同的对象,那么这个代码就是针对这个对象的代码窗。
6.对象和过程窗口
这两个窗口又是一个重要的内容,不知道同学们有没有听说过“VBA事件”,就是在这里选择的,例如选择工作表对象后,如下:
又如选择了窗体对象后,双击窗体区域,或者鼠标右键——查看代码,都可以调出窗体的代码窗口,如下:
7.立即窗口
这个窗口,作者E图表述很少使用。它的作用是显示代码运行的结果(我们调试代码的时候,就在工作表或者窗体中点击运行就好了),需要DEBUG.PRINT代码辅助,如下:
Sub jiafa()
a = 1 + 2
Debug.Print a
End Sub
8.本地窗口
本地窗口,是作者一直都会打开的窗口。这个窗口对于“逐语句F8”调试代码是相当重要的,如下代码演示:
我们连着按F8,就可以看到代码在逐行运行,并且本地窗口中,对变量的变化给出了相当明显的标记,便于我们调试代码。(另:这个本地窗口对于我们了解代码的运行规律也是相当有帮助的。)
9.监视窗口
和本地窗口的用途差不多,不过我们使用监视窗口前,需要添加被监视的变量表达式,如下:
以上就是同学们能看到的VBE主要界面上的窗口和菜单工具栏,作者E图表述想告诉大家:没事儿随便点一点,EXCEL不娇气,没那么容易被你“点坏”的。
四、窗体、模块、类模块的意义
刚才我们在资源工程管理器中,用鼠标右键插入了窗体、模块、类模块三个内容,它们在EXCEL VBA中有着相当重要的作用,是同学们走向自动化办公的必经之路。
我们通过本讲简单的了解一下它们的意义,以后我们都会有专门的篇章去学习。
1.窗体
承载窗体、控件的载体,我们有的时候使用工具栏的内容,就会弹出一些窗体,比如我们上面讲到的菜单栏——工具——选项窗体,在窗体对象的代码窗口中写下代码,那么我们就可以自己DIY一个交互式操作界面,是不是很酷,想想都兴奋的想操作啊!
2.模块
模块是使用最多的一个环节。其他的对象只能在本身对应的代码窗口中调用代码语句,可是在模块中写入的代码,却可以被其他对象引用。工作表对象的代码、工作薄对象的代码、窗体代码、控件代码、模块与模块之间,都可以使用CALL语句调用模块中的代码。
另外,在模块中使用FUNCTION函数过程,还可以写出“自定义函数”,如果你的EXCEL版本低,用不了XLOOKUP、MAXIFS、TEXTJOIN这类函数,可以用FUNCTION函数过程自己写出代码,和使用工作表函数一样方便。
3.类模块
类模块是自定义类的属性和方法的模块。使用VBA编写的过程就是操作对象属性和方法的过程,而类模块是自定义这一过程的方式,我们在代码中看到的PUBLIC PROPERTY过程,就属于类模块。它通常用于应用程序级别的事件中,慢慢来,跟着学,终会遇到。
【编后语】
本章的信息量很大,但是作者还是觉得有必要让同学们了解自己正在学习的这个VBE平台“到底长什么样子以及其意义”,学习不能盲目,我们要走最近的路,但不能盲目的走下去,所以就有了此篇教程。如果对你有所帮助,留言告诉我,然后“分享”“在看”一波走起。
最后给出开篇《九九乘法表》的答案,记得多练习啊!!!顺便看看代码的层级缩进!
Sub 九九乘法表()
With Sheets("九九乘法表")
For i = 1 To 9
For j = 1 To 9
If i >= j Then
.Cells(i, j) = j & "*" & i & "=" & j * i
End If
Next j
Next i
End With
End Sub