Excel 中的 VBA:什么是 Visual Basic for Applications,如何使用

Everybody in this country should learn how to program a computer... because it teaches you how to think." -Steve Jobs

我希望引用史蒂夫·乔布斯的名言,并说世界上每个人都应该学会如何编写计算机程序。你不一定最终会成为一名程序员,或者根本就不写程序,但它会教会你如何思考。

什么是 Visual Basic for Applications (VBA)?

Visual Basic for Applications (VBA) 是微软实现的一种事件驱动编程语言,用于开发 Office 应用程序。VBA 有助于开发自动化流程、Windows API 和用户定义函数。它还允许您操作主机应用程序的用户界面功能。

在深入了解细节之前,让我们先用通俗易懂的语言看看什么是计算机编程。假设你有一个女佣。如果你想让女佣打扫房子并洗衣服。你用例如英语告诉她做什么,她就为你做。当你使用计算机时,你将希望执行某些任务。就像你告诉女佣做家务一样,你也可以告诉计算机为你做事。

告诉计算机你希望它为你做什么的过程就是计算机编程。就像你用英语告诉女佣做什么一样,你也可以使用类似英语的陈述来告诉计算机做什么。类似英语的陈述属于高级语言类别。VBA 是一种高级语言,你可以用它来让你随心所欲地控制 Excel。

VBA 实际上是 Visual Basic 6.0 的一个子集。BASIC 是 Beginners All-Purpose Symbolic Instruction Code 的缩写,意为“初学者通用符号指令代码”。

为什么选择 VBA?

VBA 允许您使用类似英语的陈述来编写指令,以创建各种应用程序。VBA 易于学习,并且具有易于使用的用户界面,您只需拖放界面控件即可。它还可以通过让 Excel 按您想要的方式运行来增强 Excel 的功能。

Excel 中 VBA 的个人与商业应用

对于个人用途,您可以使用它来自动化大多数日常任务的简单宏。有关如何实现此目的的更多信息,请阅读有关宏的文章。

对于商业用途,您可以创建由 Excel 和 VBA 驱动的完整强大程序。这种方法的优点是您可以在自己的自定义程序中利用 Excel 的强大功能。

Visual Basic for Applications 入门

在编写任何代码之前,我们首先需要了解基础知识。以下基础知识将帮助您入门。

  • 变量 – 在高中时我们学过代数。找出 (x + 2y),其中 x = 1 且 y = 3。在这个表达式中,x 和 y 是变量。它们可以被赋值为例如 1 和 3,正如本例所示。它们也可以更改为例如 4 和 2。简而言之,变量是内存位置。在使用 VBA Excel 时,您也需要像代数课一样声明变量。
  • 创建变量的规则
    • 不要使用保留字 – 如果您是一名学生,则不能使用讲师或校长等头衔。这些头衔是为讲师和学校当局保留的。保留字是指在 Excel VBA 中具有特殊含义的词,因此您不能将其用作变量名。
    • 变量名不能包含空格 – 您不能定义名为“first number”的变量。您可以使用“firstNumber”或“first_number”。
    • 使用描述性名称 – 用自己的名字命名变量非常诱人,但请避免这样做。使用描述性名称,例如“quantity”(数量)、“price”(价格)、“subtotal”(小计)等,这将使您的 Excel VBA 代码易于阅读。
  • 算术运算符 – 括号、除法、乘法、加法和减法 (BODMAS) 规则适用,因此在处理涉及多个不同算术运算符的表达式时,请记住应用它们。就像在 Excel 中一样,您可以使用
    • + 用于加法
    • – 用于减法
    • * 用于乘法
    • / 用于除法。
  • 逻辑运算符 – 在 VBA 中工作时,前面教程中涵盖的逻辑运算符概念也适用。这些包括
    • If 语句
    • 或者
    • NOT
    • 并且

如何启用“开发工具”选项卡

以下是有关如何在 Excel 中启用“开发工具”选项卡的步骤

  • 创建新的工作簿
  • 单击功能区开始按钮
  • 选择选项
  • 单击自定义功能区
  • 勾选开发工具复选框,如下图所示
  • 点击确定

Enable the Developer Tab

现在您应该能在功能区看到“开发工具”选项卡

VBA Hello World!

现在我们将演示如何使用 VBA 编程语言进行编程。VBA 中的所有程序都必须以“Sub”开头,以“End sub”结尾。这里的名称是您想分配给程序的名称。Sub 是 subroutine(子程序)的缩写,我们将在教程的后续部分进行学习。

Sub name()
.
.
. 
End Sub

我们将创建一个基本的 VBA 程序,该程序会显示一个输入框,要求用户输入姓名,然后显示一个问候语。

本教程假定您已完成 Excel 宏入门 教程,并且已在 Excel 中启用了“开发工具”选项卡。

  • 创建新的工作簿
  • 将其另存为启用了宏的 Excel 工作簿格式 *.xlsm
  • 单击“开发工具”选项卡
  • 在“控件”功能区栏下,单击“插入”下拉框
  • 选择一个命令按钮,如下图所示

VBA Hello World Program

在工作表上的任意位置绘制命令按钮

您将看到以下对话框窗口。

VBA Hello World Program

  • 将宏名称重命名为 btnHelloWorld_Click
  • 单击新建按钮
  • 您将获得以下 VBA 代码窗口

VBA Hello World Program

输入以下指令代码

Dim name As String
name = InputBox("Enter your name")
MsgBox "Hello " + name

此处,

  • “Dim name as String” 创建一个名为 name 的变量。由于我们将其定义为字符串,因此该变量将接受文本、数字和其他字符。
  • “name = InputBox(“Enter your name”)” 调用内置函数 InputBox,该函数会显示一个标题为“Enter your name”的窗口。然后将输入的姓名存储在 name 变量中。
  • MsgBox “Hello ” + name” 调用内置函数 MsgBox,该函数会显示“Hello”和输入的姓名。

您完整的代码窗口现在应该如下所示:

VBA Hello World Program

  • 关闭代码窗口
  • 右键单击“按钮 1”并选择“编辑文本”
  • 输入“Say hello”

VBA Hello World Program

  • 单击“Say Hello”
  • 您将看到以下输入框

VBA Hello World Program

  • 输入您的姓名,例如 Jordan
  • 您将看到以下消息框

VBA Hello World Program

恭喜您,您已在 Excel 中创建了第一个 VBA 程序!

逐步示例:如何在 Excel 中创建简单的 EMI 计算器

在本教程练习中,我们将创建一个计算 EMI 的简单程序。EMI 是 Equated Monthly Instalment(等额月供)的缩写。这是您在获得贷款时每月偿还的金额。下图显示了计算 EMI 的公式。

Creating a Simple EMI Calculator in Excel

上述公式很复杂,但可以在 Excel 中编写。好消息是 Excel 已经处理了上述问题。您可以使用 PMT 函数来计算上述值。

PMT 函数的工作原理如下:

=PMT(rate,nper,pv)

此处,

  • “rate”(利率):这是月利率。它是年利率除以年付款次数。
  • “nper”(付款期数):这是总付款次数。它是贷款期限乘以年付款次数。
  • “pv”(现值):这是实际贷款金额。

使用 Excel 单元格创建 GUI,如下图所示

Creating a Simple EMI Calculator in Excel

在第 7 行和第 8 行之间添加一个命令按钮

给按钮宏命名为 btnCalculateEMI_Click

单击编辑按钮

输入以下代码

Dim monthly_rate As Single, loan_amount As Double, number_of_periods As Single, emi As Double
monthly_rate = Range("B6").Value / Range("B5").Value
loan_amount = Range("B3").Value
number_of_periods = Range("B4").Value * Range("B5").Value 
emi = WorksheetFunction.Pmt(monthly_rate, number_of_periods, -loan_amount)
Range("B9").Value = emi

此处,

  • “Dim monthly_rate As Single,…” Dim 是用于定义 VBA 中变量 的关键字,monthly_rate 是变量名,Single 是数据类型,表示变量将接受数字。
  • “monthly_rate = Range(“B6”).Value / Range(“B5″).Value” Range 是用于从 VBA 访问 Excel 单元格的函数,Range(“B6”).Value 指的是 B6 中的值。
  • “WorksheetFunction.Pmt(…)” WorksheetFunction 是用于访问 Excel 中所有函数的函数。

下图显示了完整的源代码

Creating a Simple EMI Calculator in Excel

  • 单击保存并关闭代码窗口
  • 测试您的程序,如下图所示的动画

Creating a Simple EMI Calculator in Excel

如何在 Excel 示例中使用 VBA

以下步骤将说明如何在 Excel 中使用 VBA。

步骤 1) 打开您的 VBA 编辑器

在主菜单的“开发工具”选项卡下,单击“Visual Basic”图标,它将打开您的 VBA 编辑器。

Use VBA in Excel

步骤 2) 选择 Excel 工作表并双击工作表

它将打开一个 VBA 编辑器,您可以在其中选择要运行代码的 Excel 工作表。要打开 VBA 编辑器,请双击工作表。

Use VBA in Excel

它将在文件夹的右侧打开一个 VBA 编辑器。它看起来会像一个空白区域。

Use VBA in Excel

步骤 3) 编写任何您想在 MsgBox 中显示的内容

在此步骤中,我们将看到我们的第一个 VBA 程序。为了读取和显示我们的程序,我们需要一个对象。在 VBA 中,该对象或媒介是一个 MsgBox。

  • 首先,写“Sub”,然后写您的“程序名称”(Guru99)
  • 写任何您想在 MsgBox 中显示的内容(guru99-learning is fun)
  • 用 End Sub 结束程序

Use VBA in Excel

步骤 4) 单击编辑器顶部的绿色运行按钮

在下一步中,您需要通过单击编辑器菜单顶部的绿色运行按钮来运行此代码。

Use VBA in Excel

步骤 5) 选择工作表并单击“运行”按钮

运行代码时,另一个窗口将弹出。在这里,您需要选择要显示程序的工作表,然后单击“运行”按钮。

Use VBA in Excel

步骤 6) 在 MsgBox 中显示消息

当您单击“运行”按钮时,程序将执行。它将在 MsgBox 中显示消息。

Use VBA in Excel

下载上面的 Excel 代码

摘要

VBA 全称:Visual Basic for Application。它是 Visual Basic 编程语言的一个子组件,您可以使用它在 Excel 中创建应用程序。使用 VBA,您仍然可以利用 Excel 的强大功能,并在 VBA 中使用它们。