跳转至

00 VBA入门教程

在EXCEL的表格学习中,有两大分水岭,一个是会不会懂函数,一个是会不会VBA,VBA是visual Basic 的简称,是一种办公自动化程序,内嵌在EXCEL表格中,可以实现自动化的开发,如批量合并拆分工作表,批量导出文件,批量新建文件等等各种复杂的需求,下面我们一起看一下要写VBA程序最关键的几个步骤:

一、新建xlsm文件

平时我们用的文件都是xls或者xlsx文件居多,如果需要使用宏文件,则需要另存为xlsm文件,方法为:

  • 第一步:新建一个xlsx文件,文件名随便取,比如测试.xlsx
  • 第二步,打开这个xlsx文件,另存为xlsm文件(Excel启用宏的工作簿)

经过这样的设置之后,此工作簿之内就可以放置我们的VBA代码,并且代码内嵌于表格文件内,非常方便


二、设置宏信任

点击EXCEL左上角的文件,点击选项,进入信任中心→信任中心设置,然后找到宏设置,在这里勾选”启用VBA宏”,这一步的目的是让你写的VBA代码不会被阻止,能够成功运行

所以有的时候你发现表格提示你是否启用宏,大概率是这里没有做设置


三、打开开发工具选项卡

在大部分人的表格中,并不能直接看到“开发工具”选项卡,这个是因为只有你要用宏,这个地方才是最主要的作用,正常的开发工具选项卡长这样:

在这个选项卡中,你可以点击Visual Basic就可以进入代码编程界面,也可以使用录制宏实现快捷的代码生成,当然这个是后话,我们首先看看如何将这个工具卡显示出来

  • 第一步:文件→选项→自定义功能区
  • 第二步:勾选自定义功能区中的开发工具选项卡

通过上述操作,你就可以在自己顶部的工具栏看到这个选项卡,开始进入代码的开发了


四、新建第一个VBA代码程序

我们可以点击开发工具的第一个选项卡Visual Basic就可以进入代码编程界面,或者我们也可以按alt+f11实现,如果是笔记本的话,需要搭配fn进行使用,完整快捷键为alt+fn+f11,就可以进入这样一个编程界面了:

我们可以在当前的VBA project上右键,插入一个模块,得到如下界面(可以看出多了一个模块1):

在这个模块1中,我们就可以编写代码了,比如我们填入下面这段代码:

1
2
3
Sub test()
    MsgBox "hello world"
End Sub
上面这段代码 sub定义了一个名为 test 的模块,subend sub之间的就是所有需要执行的代码,我们通过msgbox弹出来一句话,叫做hello world,这个就是上述代码的全部功能,所以我们运行之后可以看到:

在界面的最中间,有一个弹窗,里面填入了我们刚才代码中需要呈现的内容,因此到这里你就完成了最简单的一个程序


五、录制宏功能

其实如果我们人为去编写代码的话,由于VBA的编程界面比较原始,因此会花费比较长的时间,但是VBA内置给我们提供了一个快捷的代码编写助手“录制宏”,它的功能是帮你把你操作的所有内容都用代码的形式呈现,比如我们使用录制宏来生成一段代码:

比如我们的数据源是这样的,接下来我们点击开发工具选项卡下的录制宏功能,直接点击确定即可:

这个时候你会发现,开发工具选项卡下录制宏的按钮就变成了停止录制,说明此时你做的操作都会被记录下来:

接下来我们对数据源做以下操作,调整成最后的这种格式,然后点击“停止录制”: - 对第一行文字改成黑体 - 对第一行文字单元格底色改为绿色,字体颜色改为白色 - 对区域套用单实线黑边框

然后我们返回VBA编程界面,就可以发现在当前工程下多了一个模块2,这里面有个名为宏1的模块,这个就是我们刚才录制宏产生的,里面清晰记录了我们刚才的每一步操作,如果你现在对代码不太熟悉,至少能看到黑体这两个字,对应的就是我们刚才修改字体的那一步

那录制宏之后,具体有什么作用呢,如果你有类似上面一样的数据源,我们点击一下这个执行按钮,就马上帮你调整好了格式(但是前提是数据源的位置和原来的数据源一致)

但是其实你也发现了,如果我们通过这种方式生成的代码,太过冗长并且不太灵活,如果这样几步的操作要用这么多行代码实现,那就太辛苦了(其实录制宏得到的大部分代码都是默认值,没必要写的),所以我们后面学习VBA的话就是学会如何让代码更加灵活,如何用更少的代码行干更多的活