编写你的第一个 VBA 宏

通过之前的几篇教程,我们已经对 Excel VBA 有了基本的认识,并且已经初步学会使用 VBA 编辑器。如果你还没有阅读,建议先阅读学习。

  1. 什么是 Excel VBA?
  2. Excel VBA 中的基本概念
  3. 启用 Excel 开发工具
  4. 设置宏安全性
  5. 保存含 VBA 代码的工作簿
  6. 使用 VBA 编辑器进行 Excel VBA 开发

今天的教程中,介绍如何从零开始,编写一个 VBA 宏,即一个 VBA 过程。建议按照步骤自己动手实践,手动输入代码并运行。

步骤 1 创建启用宏的工作簿

首先新建一个工作簿,并将工作簿保存为「启用宏的工作簿」类型。详细步骤查看这篇文章。

 

步骤 2 打开 VBA 编辑器

通过功能区「开发工具 → 代码→Visual Basic」或快捷键 Alt + F11 打开 VBA 编辑器。详细步骤参考这篇文章。

 

步骤 3 插入一个新模块

Excel 工作簿中的 VBA 代码通常保存在工作表对象或模块中。本例中,我们用模块保存 VBA 代码。

首先选中左侧工程列表中的工作簿,后右键,在弹出的选项列表中,选择「插入」。二级菜单中,选择「模块」,完成插入新模块。

 

插入完成后,在工程列表对应工作簿内,在模块文件夹下,显示新插入的模块。新插入的模块的默认名称是,模块 x,本例中是模块1。在属性窗口,可以修改模块的名称。

 

步骤 4 打开模块

双击上一步插入的模块1,在右侧代码窗口区域里,将打开模块1的代码编辑器。在右侧代码窗口中当前打开的代码编辑器所对应的模块,在编辑器标题末尾可以看到。

 

步骤 5 创建一个宏(VBA 过程)

在代码编辑窗口中,输入以下代码:

Sub MyCode()
    
End Sub

这段代码是一个空的 VBA 过程,只有开始和结束。过程的其他代码,都在这中间编写。

其中 Sub 是 Subroutine 的缩写,直译过来是子程序。在 VBA 中表示一个过程,也是代表一个过程的开始。下一行 End Sub 表示过程的结束。

 

步骤 6 编写 VBA 过程实体部分

过程的实体部分指的是,真正会被执行的部分。上一步创建的是一个空的 VBA 过程,里面不包含实体代码。虽然可以正常运行,但是不会有结果输出。

这一步我们编写 VBA 过程的实体部分。将如下代码输入到过程的开始和结束处之间。

MsgBox "Hello World"

 

步骤 7 运行代码

现在我们已经写完了一个完整的 VBA 过程,现在运行它,看一下结果。

将光标放置在代码的任何一处,点击工具栏上的运行「▶ 」按钮,或按 F5,运行代码。

可以看到运行结果,Excel 弹出一个对话框,显示内容正是在代码中编写的内容。

 

总结

本篇教程介绍了如何从零开始编写 VBA 过程,基本步骤如下:

  1. 插入模块
  2. 创建空过程
  3. 编写过程的实体
  4. 运行过程
转载注明:文章转载自「懒人Excel - www.lanrenexcel.com
订阅评论
提醒
39 评论
最新
最旧 最多投票
内联反馈
查看所有评论
anna
21 天 前

Hello World

online
6 月 前

作者用的什么截图工具呀?看上去蛮好用的。

EDWARD
11 月 前

谢谢大神这么详细的教程,希望有一天我也能做出适合自己的VBA

awlei
1 年 前

编译错误,缺少:语句结束,但是最后是有End Sub

hello
1 年 前

Sub MyCode()这里的 My Code ()是什么意思?可以替换成任意别的内容吗?

hqq
1 年 前

我的运行一直让填入宏名称,显示错误,不知道怎么回事?使用的是WPS

青黛”
1 年 前
回复给  懒人Excel

创建名称,写的MsgBox,然后就显示的语法错误

小菜鸟
1 年 前

WPS只有宏编辑器
页面很相似
但是到运行就不行了,提示是另存为宏

zjysg
1 年 前

Hello 大佬

菜头啊
1 年 前

谢谢作者~

海棠*
1 年 前

插入“模块”然后写代码,与不插入“模块”直接双击工程窗口中的”sheet1“也会跳出一个代码编辑的窗口。
这两种有什么差异呢?

爱偷懒的萱萱
1 年 前

有一个疑问:
我把代码保存了,再打开为什么它没有提示我要不要运行,也没有直接运行,这是正常情况吗?

YIN
1 年 前

怎么在主页面设置一个按钮,点击一下,就能弹出“Hello world”这样的效果

ypillar
2 年 前

每次运行的时候都会有提示窗口,文件是在指定信任位置放的,能去掉吗?
还有个问题 你声明的Option Explicit下面的横线是怎么来的

ls0320
2 年 前

厉害 言简意赅

LAL
2 年 前

受教了

macy
2 年 前

非常清楚明白

Chris
2 年 前

初学者的福利,谢谢作者~笔芯

落小黑
2 年 前

WPS的VBA好像和这个不太一样,录入之后无法运行,为什么啊

richel
2 年 前
回复给  落小黑

我的可以诶

PIN
2 年 前
回复给  懒人Excel

我也是用WPS,同样的情况,可能是WPS的宏性能不够好

Vincent
2 年 前

嘻嘻,hello world

ESAKA
2 年 前

又学会了一个 Hello World, 哈哈

虎哥发发发
2 年 前
回复给  ESAKA

哈哈哈,太多只学到这步

yuebaiyuan
3 年 前

感觉有点什么的一个提示框

最后由yuebaiyuan编辑于3 年 前
cufu
3 年 前

加油

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