您将需要的最佳 VBA 指南(适合初学者)

在几乎所有Microsoft Office产品中运行的VBA 编程(VBA programming)平台是任何人都可以用来增强他们对这些产品的使用的最强大的工具之一。

VBA初学者指南将向您展示如何将开发人员(Developer)菜单添加到您的Office应用程序,如何进入VBA编辑器窗口,以及基本VBA语句和循环如何工作,以便您可以开始在ExcelWordPowerpoint中使用(Powerpoint)VBAOutlookOneNote

VBA指南使用最新版本的Microsoft Office产品。如果您有早期版本,您可能会看到与屏幕截图略有不同。

如何启用和使用 VBA 编辑器(How To Enable & Use The VBA Editor)

在本指南中使用的任何Office产品中,您可能会注意到您没有引用的开发人员(Developer)菜单。开发人员菜单仅在ExcelWordOutlookPowerpoint中可用。OneNote不提供从应用程序内部编辑VBA代码的工具,但您仍然可以引用OneNote API以与其他Office程序中 的OneNote交互。(OneNote)

您将在我们即将发布的高级 VBA(Advanced VBA)指南中了解如何执行此操作。

  • 要在任何办公产品中启用开发人员菜单,请选择(Developer)文件(File)菜单,然后从左侧导航菜单中 选择选项。(Options)
  • 您将看到一个选项(Options)菜单弹出窗口。从左侧导航菜单中选择自定义功能区。(Customize Ribbon)

左侧列表包括该Office(Office)应用程序中可用的所有可用菜单和菜单命令。右侧的列表是当前可用或激活的列表。

  • 您应该在右侧列表中看到Developer,但它不会被激活。只需(Just)选中复选框即可激活开发人员(Developer)菜单。

  • 如果您在右侧看不到Developer可用,则将左侧的(Developer)Choose commands从下拉菜单更改为All Commands。从列表中找到Developer并在中心选择(Developer)Add>>以将该菜单添加到Ribbon
  • 完成后选择确定(OK)
  • 开发者(Developer)菜单激活后,您可以返回主应用程序窗口并从顶部菜单中 选择开发者。(Developer)
  • 然后从功能区的控件组中选择(Controls)查看代码(View Code)以打开VBA编辑器窗口。

  • 这将打开VBA编辑器窗口,您可以在其中键入您将在接下来的几节中学习的代码。

  • 尝试将开发人员(Developer)菜单添加到您每天使用的一些Office应用程序中。(Office)一旦您可以轻松打开VBA编辑器窗口,请继续阅读本指南的下一部分。

初学者的通用 VBA 编程技巧(General VBA Programming Tips for Beginners)

您会注意到,当VBA编辑器打开时,左侧面板中的导航选项看起来与一个Office应用程序不同。

这是因为可以放置VBA代码的可用对象取决于应用程序中有哪些对象。例如,在Excel 中(Excel),您可以将VBA代码添加到工作簿或工作表对象。在Word中,您可以将VBA代码添加到文档中。在Powerpoint中,仅适用于模块。

所以,不要对不同的菜单感到惊讶。VBA代码的结构和语法在所有应用程序中都是相同的。唯一的区别是您可以引用的对象以及您可以通过VBA代码对这些对象执行的操作。

在我们深入研究可以通过VBA代码对它们执行的不同对象和操作之前,让我们先看看在编写VBA代码时可以使用的最常见的VBA结构和语法。(VBA)

在哪里放置 VBA 代码(Where To Put VBA Code)

当您在VBA编辑器中时,您需要使用编辑窗口顶部的两个下拉框来选择要将代码附加到哪个对象以及何时运行代码。

例如,在Excel 中(Excel),如果您选择WorksheetActivate,代码将在工作表打开时运行。 

可用于触发VBA代码的其他工作表操作包括工作表更改时间、关闭(停用)时间、工作表计算运行时间等。

当您在编辑器中添加VBA代码时,请始终确保将您的VBA代码放在对象上并使用您想要用来触发该代码的正确操作。

VBA IF 语句(VBA IF Statements)

IF 语句在VBA中的工作方式与在任何其他编程语言中的工作方式一样。

IF 语句的第一部分查看一个条件或一组条件是否为真。这些条件可以通过AND或 OR 运算符连接起来以将它们链接在一起。

一个例子是检查电子表格中的成绩是否高于或低于“及格”成绩,并将通过或失败状态分配给另一个单元格。

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

如果您不想将整个语句放在一行中,可以通过在行尾添加“_”符号将其拆分为多行。

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

使用这种技术通常可以使代码更易于阅读和调试。

下一个循环的 VBA(VBA For Next Loops)

IF 语句非常适合单个比较,例如上面查看单个单元格的示例。但是,如果您想遍历整个单元格范围并在每个单元格上执行相同的 IF 语句怎么办?

在这种情况下,您需要一个FOR循环。 

为此,您需要使用范围的长度,并按包含数据的行数循环该长度。

为此,您需要定义范围和单元格变量,并循环访问它们。您还需要定义一个计数器,以便将结果输出到相应的行。所以你的VBA代码首先会有这一行。

Dim rng As Range,单元格 As Range (Dim rng As Range, cell As Range)
Dim rowCounter as Integer

定义范围大小如下。 

Set rng = Range(“B2:B7”)
rowCounter = 2

最后,您可以创建FOR循环以逐步遍历该范围内的每个单元格并进行比较。

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

运行此VBA 脚本(VBA script)后,您会在实际电子表格中看到结果。

VBA While 循环(VBA While Loops)

While循环(Loop)也循环一系列语句,就像FOR循环一样,但循环继续的条件是保持为真的条件。

例如,您可以编写与上述相同的FOR循环,作为WHILE循环,只需使用 rowCounter 变量,如下所示。

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

注意:需要rng.Count + 2终止限制,因为行计数器从 2 开始,需要在数据结束的第 7 行结束。但是,范围 (B2:B7) 的计数只有 6,只有当计数器大于计数器时,While 循环才会结束——因此最后一个 rowCounter 值需要为 8(或 rng.Count + 2)(GREATER)

您还可以按如下方式设置 While 循环:

While rowCounter <= rng.Count + 1

您只能将范围计数 (6) 增加 1,因为一旦 rowCounter 变量到达数据的末尾(第 7 行),循环就可以结束。

VBA Do While 和 Do until 循环(VBA Do While and Do Until Loops)

Do While 和 Do Until 循环与 While 循环几乎相同,但工作方式略有不同。

  • While 循环在循环(While Loop)开始时检查条件是否为真。
  • Do-While 循环(Do-While Loop)在执行循环中的语句后检查条件是否为真。
  • Do-Until 循环(Do-Until Loop)在执行循环后检查条件是否仍然为假。

在这种情况下,您可以将上面的 While 循环重写为 Do-While 循环,如下所示。

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

在这种情况下,逻辑不会发生太大变化,但是如果您想确保在所有语句运行后进行逻辑比较(无论如何都允许它们至少运行一次),那么 Do-While或 Do-Until 循环是正确的选择。

VBA 选择案例语句(VBA Select Case Statements)

要开始构建VBA(VBA)代码,您需要了解的最后一种逻辑语句是Select Case语句。

鉴于上面的示例,假设您想要一个不只是通过失败的评分方法。相反,您想要分配从 A 到 F 的字母等级。

您可以使用以下Select Case语句执行此操作:

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

VBA脚本运行后生成的电子表格如下所示。

现在,您了解了在Microsoft Office应用程序中开始使用(Microsoft Office)VBA所需了解的一切。



About the author

我是一名计算机技术人员,拥有超过 10 年的经验和使用 Android 设备的经验。过去五年我也一直在办公室工作,在那里我学会了如何使用 Office 365 和 MacOS。在业余时间,我喜欢花时间在户外听音乐或看电影。



Related posts