使用 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 学习要求。

 

转载注明:文章转载自「懒人Excel - www.lanrenexcel.com
订阅评论
提醒
31 评论
最新
最旧 最多投票
内联反馈
查看所有评论
wxlscm
11 月 前

加油,老师

vba-noob
1 年 前

为什么我的vb编辑器不能改字体,也没有代码高亮啊

vba-student
1 年 前

看这个可以学会吗,不看学习平台那个的话?

zjysg
1 年 前

反复测试,几种方法都试了试,竟然都可以,哈哈哈

hikali
1 年 前

第一次成功运行一个小代码好开心!谢谢老师!

爱偷懒的萱萱
1 年 前

属性窗口左侧属性名的意思能看懂两个一个是列宽、一个是名字,其他的还需要搜一下,我的代码可以正常运行,开心,我的代码如下,哈哈哈
Sub MyCode()
Sheet1.Range(“A1”) = “你好”
Sheet1.Range(“A2”) = “很高兴认识你~”
Sheet1.Range(“A3”) = “交个朋友!”
Dim N As String
N = “你好漂亮~”
Range(“A4”) = N
End Sub

123_ZC
9 月 前

学而时习之,不亦说乎?

vba小白
1 年 前

已经OK!很好用!

最后由vba小白编辑于1 年 前
海棠*
1 年 前

抄了你的代码试了一下,Range(“A4”) = N,这一句前面也得加上”sheet1”吧?
否则运行不了哎。

hcgk
1 年 前
回复给  海棠*

我的实测结果是:不用指定sheet1,代码的作用效果是当前激活的工作表。
举个例子,我当前激活工作表是Sheet2,前几行指定sheet1的文字将会作用于sheet1,然而没有指定sheet1的Range(“A4”) = N将会在当前激活工作表(Sheet2)中的A4中打印指定文字

小露*
1 年 前

运行代码显示未注册对象库

大土豆
2 年 前

请问,目前除了自带的编辑器,有第三方编辑器用于VBA的编写开发么?

ddd
2 年 前

求问,属性窗口和立即窗口怎么打开啊,我这边没有

ddd
2 年 前
回复给  懒人Excel

谢谢!

VBA小白白
2 年 前

很棒的教程,持续学习中

heitainiu
2 年 前

继续学习~~

VBA小白
2 年 前

sub和endsub 是怎么出来的

Vincent
2 年 前

打卡成功

路人的贾
2 年 前

为啥我就打不出“Hello Word”

Alison
2 年 前

打卡

cufu
3 年 前

第二天打卡,加油 教程很直观

31
0
希望看到您的想法,请您发表评论x