使用 VBA 编辑器进行 Excel VBA 开发
工欲善其事,必先利其器。对于 Excel VBA 开发来说,VBA 编辑器就是最核心的开发工具。可以说,Excel VBA 开发中的每一个步骤,几乎都在 VBA 编辑器中进行,包括编写、调试、测试、运行、代码组织等。
这篇文章我们主要介绍 VBA 编辑器基础部分,接下来学习 VBA 基础部分时,将会反复使用到。
建议你读这篇文章时,打开一个 Excel 工作簿,按照文章内容,自己“折腾折腾”,这是学习 VBA 最快的方法。
打开 VBA 编辑器
方法一,使用开发工具选项卡。点击开发工具选项卡Visual Basic
命令。
如何开启开发工具选项卡,查看这篇文章。
方法二,工作表右键菜单。在任意工作表标签上方,右键,在弹出的选项列表中,选择「查看代码」。
方法三,使用快捷键 Alt + F11。
认识 VBA 编辑器
通过上述方法打开编辑器,将会看到如下界面。图中已标出编辑器每个模块的名称。
编辑器中每个模块的基本用法如下:
- 工具栏:编辑器命令栏,与 Excel 功能区域类似,包含 Excel VBA 开发相关的命令。
- VBA 工程:显示当前 VBA 工程包含的所有对象。通常,一个工作簿就是一个 VBA 工程,其中包括 Excel 对象、工作表对象、模块等。
- 属性窗口:查看和设置选中对象的属性的窗口。
- 代码编辑窗口:实际编写代码的位置。编写、修改、保存代码,都在这里进行。
- 立即窗口:代码运行过程中,打印出的内容,在立即窗口中显示。一般用于调试代码。
管理 VBA 工程
通常,一个工作簿就是一个 VBA 工程,其中包括 Excel 对象、工作表对象、模块等。当多个工作簿同时打开时,他们公用同一个 VBA 编辑器,VBA 工程界面显示所有的 VBA 工程。
插入/删除模块
在一个 VBA 工程中想要插入新的模块时,可在 VBA 工程右键,选择插入类型即可。
要删除模块,选中模块,右键,选择「移除 模块」
修改对象/模块属性
当点击 VBA 工程界面中任意一个 Excel 对象或模块时,在下方的属性窗口显示选中对象的各项属性信息。其中左侧是属性名,右侧是属性值,在这里可以直接手动修改属性值。
以下为一个 Excel 工作表对象的属性窗口。
提示:在之前分享的「如何深隐藏工作表」教程中,正是使用工作表属性窗口,修改
Visible
属性来达到深隐藏的效果。点击这里查看该教程。
运行 VBA 代码
编辑器中运行 VBA 代码,可能是执行最频繁的操作了。在开发过程中,每更新一次代码,可能需要运行,看一下其结果是否正确。
现在在模块1中有以下一段代码(如何写 VBA 代码,将在下一篇中介绍):
Sub MyCode()
Sheet1.Range("A1") = "Hello World"
End Sub
代码的作用是,在 Sheet1 工作表 A1 单元格,写入 “Hello World” 内容。
在编辑器中运行 VBA 代码,有以下 3 种方法:
1.使用工具栏命令
首选,将光标放置在要运行的代码的任意一处,再在工具栏选择「运行」→「运行子过程/用户窗体」命令。
2.使用快捷工具栏命令
首选,将光标放置在要运行的代码的任意一处,再点击快捷工具栏「▶ 」按钮。
3.使用快捷键 F5
首选,将光标放置在要运行的代码的任意一处,再使用快捷键 F5,即可运行代码。
按方法2运行代码效果如下:
总结
以上就是 VBA 编辑器的基础使用方法,建议你按照本教程内容,自己动手操作一遍。动手操作,好于看100遍教程。关于 VBA 编辑器的更多内容和教程,将专门用一章介绍。目前阶段,掌握上述基础部分,满足接下来的 VBA 学习要求。
捉虫:“方法二,使用快捷键 Alt + F11。”,应为“方法三”
感谢反馈,已修改。
先看后赞!谢谢老师分享
为什么邮件模块之后,没有移除模块的选项呢?———已解决,因为代码在运行,停止运行即可一处模块
非常实用的文档
加油,老师
为什么我的vb编辑器不能改字体,也没有代码高亮啊
编辑器格式需要在【工具→选项→编辑器格式】设置
看这个可以学会吗,不看学习平台那个的话?
可以先看着这个入门,看一下是否感兴趣
反复测试,几种方法都试了试,竟然都可以,哈哈哈
很奇妙哈,继续加油
第一次成功运行一个小代码好开心!谢谢老师!
加油,成功从这种「小事」开始的。
属性窗口左侧属性名的意思能看懂两个一个是列宽、一个是名字,其他的还需要搜一下,我的代码可以正常运行,开心,我的代码如下,哈哈哈
Sub MyCode()
Sheet1.Range(“A1”) = “你好”
Sheet1.Range(“A2”) = “很高兴认识你~”
Sheet1.Range(“A3”) = “交个朋友!”
Dim N As String
N = “你好漂亮~”
Range(“A4”) = N
End Sub
学而时习之,不亦说乎?
已经OK!很好用!
抄了你的代码试了一下,Range(“A4”) = N,这一句前面也得加上”sheet1”吧?
否则运行不了哎。
我的实测结果是:不用指定sheet1,代码的作用效果是当前激活的工作表。
举个例子,我当前激活工作表是Sheet2,前几行指定sheet1的文字将会作用于sheet1,然而没有指定sheet1的Range(“A4”) = N将会在当前激活工作表(Sheet2)中的A4中打印指定文字
很棒的,开头是最难的,后面会发现越来越得心应手,很有成就感!
运行代码显示未注册对象库
是不是VBA环境没有安装正确,Office尝试重装看一下
请问,目前除了自带的编辑器,有第三方编辑器用于VBA的编写开发么?
写是可以写的,但是脱离了自带开发环境,就失去了一系列错误检查、代码提示等自带便捷功能了。目前我知道的情况,第三方编辑还不能提供那些便捷的功能。
求问,属性窗口和立即窗口怎么打开啊,我这边没有
进入VBA编辑器后,在顶部工具栏选择【视图】,从中点击【属性窗口】和【立即窗口】即可。或者用快捷键 F4 和 Ctrl+G
谢谢!
很棒的教程,持续学习中
继续学习~~
sub和endsub 是怎么出来的
通过手动输入或插入界面插入的
打卡成功
为啥我就打不出“Hello Word”
可以贴一下你的代码吗?会不会是工作表没有引用对
打卡
第二天打卡,加油 教程很直观