Excel 中的 vba 是什么? (基础到高级)

什么是VBA?

VBA(Visual Basic for Applications)是一种编程语言,可让您自动化 Excel 中的几乎所有内容。使用 VBA,您可以引用 Excel 对象并使用与其关联的属性、方法和事件。例如,您可以创建数据透视表、插入图表并使用宏向用户显示消息框。

最疯狂的是:

对于您在几分钟内手动完成的所有任务,VBA 可以在几秒钟内完成,只需单击一下,并且具有相同的精度。您甚至可以编写 VBA 代码,这些代码可以在您打开文档、工作簿甚至在特定时间时自动运行。

让我向您展示一个具体的例子:

每天早上,当我去办公室时,我要做的第一件事就是为本月至今的销售额创建一个数据透视表,并将其呈现给我的老板。这包括每天相同的步骤。但当我意识到我可以使用VBA 创建数据透视表并只需单击一下即可将其插入时,它每天为我节省了 5 分钟。

创建数据透视表的宏代码

这就是 VBA 的工作原理

VBA 是一种面向对象的语言,作为一种面向对象的语言,在 VBA 中,我们以使用对象然后定义其属性的方式构建代码。

简单来说,我们首先定义对象,然后定义我们想要执行的活动。您可以在 VBA 中使用对象、集合、方法和属性来编写代码。

>不要错过这个<

假设您想告诉某人打开一个盒子。您将使用的词语是“打开盒子”。这是简单的英语,不是吗?但当涉及到 VBA 和编写宏时,就会是:

 Box.Open

正如你所看到的,上面的代码是从我们的对象盒子开始的,然后我们使用了“Open”方法。让我们更具体一点,假设您想打开红色的盒子。为此,代码将是:

 Boxes(“Red”).Open

在上面的代码中,boxes是集合,open是方法。如果您有多个盒子,我们会在此处定义一个特定的盒子。这是另一种方法:

 Box(“Red”).Unlock = True

在上面的代码中,框再次是集合,Unlock 是设置为 TRUE 的属性。

Excel中VBA的用途是什么?

在 Excel 中,您可以使用 VBA 来完成不同的任务。这里有一些:

  • 输入数据:您可以将数据输入单元格、单元格区域。您还可以将数据从一个部分复制并粘贴到另一部分。
  • 任务自动化:您可以自动执行需要花费大量时间的任务。我能给出的最好的例子是使用宏来创建数据透视表。
  • 创建自定义 Excel 函数:使用 VBA,您还可以创建自定义用户定义函数并在工作表中使用它。
  • 创建加载项:在 Excel 中,您可以将 VBA 代码转换为加载项并与其他人共享。
  • 与其他 Microsoft 应用程序集成:您还可以将 Excel 与其他 Microsoft 应用程序集成。例如,您可以将数据输入到文本文件中。

Excel 编程基础

1. 程序

VBA 中的过程是执行特定活动的一组代码或一行代码。

  1. SUB :Sub 过程可以执行操作但不返回值(但您可以使用对象来获取该值)。
  2. Function :使用 Function 过程,您可以创建函数,您可以在电子表格或其他 SUB 和 FUNCTION 过程中使用该函数(请参阅: VBA Function )。

2. 变量和常量

您需要变量和常量才能在代码中多次使用值。

  • 变量:变量可以存储一个值,它有一个名称,您必须定义它的数据类型,并且可以修改它存储的值。顾名思义,“VARIABLE”没有固定值。它就像是一个存储在系统中的储物盒。
  • 常量:常量也可以存储值,但在运行代码时无法更改该值。

3. 数据类型

您必须声明变量和常量的数据类型。

define data type

当您指定变量或常量的数据类型时,它可以确保数据的有效性。如果省略数据类型,VBA 将 Variant 数据类型应用于您的变量(这是最灵活的),VBA 将不会猜测数据类型应该是什么。

提示:显式 VBA 选项

4. 对象、属性和方法

Visual Basic for Applications 是一种面向对象的语言,要充分利用它;您需要了解 Excel 对象。

您在 Excel 中使用的工作簿包含不同的对象,对于所有这些对象,您可以访问多个属性和可以使用的方法。

5. 活动

每次在 Excel 中执行某项操作时,这都是一个事件:在单元格中输入值、插入新工作表或插入图表。以下是事件按照对象的分类:

  1. 应用程序事件:这些事件与 Excel 应用程序本身相关。
  2. 工作簿事件:这些事件与工作簿中发生的操作相关联。
  3. 工作表事件:这些事件与工作表中发生的操作相关联。
  4. 图表事件:这些事件与图表工作表(与工作表不同)相关联。
  5. 用户窗体事件:这些事件与用户窗体发生的操作相关联。
  6. OnTime 事件:OnTime 事件是那些可以在特定时间触发代码的事件。
  7. OnKey 事件: OnKey 事件是按下特定键时可以触发代码的事件。

六、适用范围

范围对象是在 VBA 代码中引用范围的最常见和流行的方式。你需要参考单元格地址,让我告诉你语法。

 Worksheets(“Sheet1”).Range(“A1”)

七、条件

与任何其他编程语言一样,您也可以在 VBA 中编写代码来测试条件。它允许您以两种不同的方式执行此操作。

  • IF THEN‌ ELSE‌这是一个 IF 语句,您可以使用它来测试条件,然后在条件为 TRUE 时执行一行代码。您还可以编写嵌套条件
  • SELECT CASE :在 select 用例中,可以指定一个条件,然后指定不同的测试结果用例来执行不同行的代码来执行。它比 IF 语句更加结构化。

8.VBA 循环

您可以在 VBA 中编写可以重复执行某个操作的代码,并且有多种方法可以编写这样的代码。

  • For Next :最适合使用 For Next 的是当您想要重复一组操作固定次数时。
  • For Each Next :当您想要从对象集合中迭代一组对象时,它非常适合使用。
  • Do While 循环:Do While 循环背后的简单思想是在条件为真时执行一项活动。
  • Do Until循环:在Do Until循环中,VBA执行一个循环,如果条件为FALSE则继续执行。

9. 输入框和消息框

  • 输入框:输入框是向用户显示输入框并收集响应的功能。
  • 消息框:消息框可帮助您向用户显示消息,但您可以选择向消息框添加按钮以获取用户的响应。

10. 错误

Excel 在遇到编程错误时很不幸,无论如何你都必须处理它们。

  1. 语法错误:这些错误就像您在编写代码时犯下的拼写错误,但 VBA 可以通过报告这些错误来帮助您。
  2. 编译错误:当您编写代码来执行某项活动但该活动无效时,就会发生这些错误。
  3. 运行时错误:代码执行期间发生运行时错误。它停止代码并显示错误对话框。
  4. 逻辑错误:这不是一个错误,而是编写代码时的错误,有时会给您在查找和修复它们时带来麻烦。

在Excel中编写宏(VBA程序)

我坚信,最初当有人开始使用 Excel 编程时,他/她应该从头开始编写越来越多的代码。从头开始编写的代码越多,您就越了解 VBA 的工作原理。

但您应该从编写简单的代码开始,而不是跳入复杂的代码。这就是为什么我现在不希望你考虑任何复杂的事情。

您甚至可以编写宏代码来创建数据透视表,但现在我不希望您考虑那么远。让我们考虑一下您想要在电子表格中执行的活动,并且您可以为其编写代码。

  1. 转到“开发人员”选项卡,然后从“Visual Basic”按钮打开Visual Basic 编辑器
    visual-basic-button
  2. 之后,从“项目窗口”插入一个新模块(右键单击>插入>模块)。
    insert-a-new-module
  3. 之后,进入代码窗口并创建一个名为“Enter Done”的宏(我们创建一个 SUB 过程),如下所示。
    code-window
  4. 从那里,您需要编写一些我们上面刚刚讨论过的代码。等一下,这样想:您需要指定要插入值的单元格,然后指定要输入的值。
  5. 输入单元格引用,为此您需要使用 RANGE 对象并在那里指定单元格地址,如下所示:
    cell-reference-range-object
  6. 之后,输入一个点,添加点后,您将获得可以设置的属性列表以及可以在该范围内执行的活动。
    enter-a-dot
  7. 从这里,您需要选择“Value”属性并设置要插入单元格“A1”的文本,执行此操作时,您的代码将如下所示。
    select-value
  8. 最后,在代码行上方输入文本(“此代码在单元格 A5 中输入值“完成”)。这是一个VBA 注释,您可以插入它来定义您编写的代码行。
    enter-the-text-above-line-code
 Sub Enter_Done() 'this code enters the value “Done” in the cell A5 Range("A1").Value = "Done" End Sub

让我们了解一下……

您可以将此代码分成两个不同的部分。

  • 第一部分中,我们使用 RANGE 对象指定单元格地址。并且,要使用范围对象引用单元格,您需要用双引号将单元格地址括起来(也可以使用方括号)。
  • 在第二部分中,我们指定了要在单元格中输入的值。您所做的是使用“.Value”设置单元格 A5 的 value 属性。之后,您指定的下一个内容是相对于 value 属性的值。每当定义一个值(如果它是文本)时,都必须将该值括在双引号中。

学习 VBA 的最佳方式

在这里,我列出了一些最令人惊奇的教程(不按任何特定顺序),可以帮助您立即学习 VBA。

11. 功能

添加评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注