Excel宏 - 快速指南



Excel宏 - 概述

Excel宏是一个或一组操作,您可以录制、命名、保存并根据需要多次运行。创建宏时,您正在录制鼠标点击和键盘输入。运行保存的宏时,录制的鼠标点击和键盘输入将按录制时的相同顺序执行。

宏可以帮助您节省在数据处理和数据报告中重复性任务的时间,这些任务需要频繁完成。

宏和VBA

您可以使用Excel命令或Excel VBA录制和运行宏。

VBA代表Visual Basic for Applications,它是一种简单的编程语言,可通过Excel Visual Basic编辑器(VBE)使用,VBE可在功能区的“开发工具”选项卡中找到。录制宏时,Excel会生成VBA代码。如果您只想录制宏并运行它,则无需学习Excel VBA。但是,如果您想修改宏,则只能通过修改Excel VBA编辑器中的VBA代码来完成。

您将在“创建简单的宏”章节中学习如何使用Excel命令录制简单的宏并运行它。您将在后面的章节中学习更多关于宏以及从Excel VBA编辑器创建和/或修改宏的内容。

个人宏工作簿

宏可以保存在您录制宏的同一工作簿中。在这种情况下,您只能从该工作簿运行宏,因此您应该保持该工作簿打开。Excel为您提供了一种存储所有宏的替代方法。它是个人宏工作簿,您可以在其中保存宏,这使您可以从任何工作簿运行这些宏。

您将在“在一个工作簿中保存所有宏”章节中学习有关个人宏工作簿的更多信息。

宏安全性

宏将作为VBA代码存储在Excel中。与任何其他代码一样,宏代码也容易受到恶意代码的攻击,这些恶意代码在您打开工作簿时可能会运行。这对您的计算机构成威胁。Microsoft提供了宏安全功能,可帮助您保护计算机免受此类宏病毒的侵害。

您将在“宏安全性”章节中了解更多信息。

绝对引用和相对引用

录制宏时,您可以对单击的单元格使用绝对引用或相对引用。绝对引用使您的宏在您录制宏的相同单元格中运行。另一方面,相对引用使您的宏在活动单元格中运行。

您将在“为宏使用绝对引用”和“为宏使用相对引用”章节中学习这些内容。

VBA中的宏代码

即使您不了解Excel VBA,您也可以从Excel录制和运行宏。但是,如果您必须修改录制的宏或通过编写VBA代码创建宏,则应该学习Excel VBA。您可以参考本教程库中的Excel VBA教程。

但是,您应该知道如何查看宏代码。您可以在“Excel VBA”章节中学习如何在Excel中访问VBA编辑器以及VBA编辑器的不同部分。

您可以在“理解宏代码”章节中学习如何在Excel VBA编辑器中查看宏代码以及理解宏代码。

将宏分配给对象

您可以将宏分配给对象,例如形状、图形或控件。然后,您可以通过单击该对象来运行宏。您将在“将宏分配给对象”章节中学习这方面的内容。

运行宏

Excel提供了几种运行宏的方法。您可以选择您想要运行宏的方式。您将在“运行宏”章节中了解这些不同的运行宏的可能方法。

使用VBA编辑器创建宏

如果您决定编写宏代码,您可以在“使用VBA编辑器创建宏”章节中学习。但是,前提是您应该具备Excel VBA知识。

编辑宏

您可以在Excel VBA编辑器中修改宏代码。如果您想进行广泛的更改,则应该具备Excel VBA知识。但是,如果您只想对代码进行小的更改,或者如果要将VBA代码从录制的宏复制到另一个宏,您可以参考“编辑宏”章节。

您可以重命名宏,甚至删除它。您也将在同一章节中学习这方面的内容。

用户窗体

窗体通常用于收集所需信息。它将不言自明,使任务变得简单。从Excel VBA编辑器创建的Excel用户窗体具有相同的用途,提供熟悉的选项,例如文本框、复选框、单选按钮、列表框、组合框、滚动条等作为控件。

您将在“用户窗体”章节中学习如何创建用户窗体以及如何使用不同的控件。

调试宏代码

有时,宏可能无法按预期运行。您可能已经创建了宏,或者您可能正在使用其他人提供的宏。您可以像调试任何其他代码一样调试宏代码,以发现缺陷并纠正它们。您将在“调试宏代码”章节中学习这方面的内容。

配置宏以在打开工作簿时运行

您可以使宏在打开工作簿时自动运行。您可以通过创建Auto_Run宏或编写工作簿打开事件的VBA代码来实现此目的。您将在“配置宏以在打开工作簿时运行”章节中学习这方面的内容。

Excel宏 - 创建

您可以通过录制击键和鼠标点击、为宏命名以及指定如何存储宏来使用Excel命令创建宏。这样录制的宏可以使用Excel命令运行。

假设您必须重复收集以下格式的某些结果:

Format

无需每次都创建表格,您可以使用宏来完成此操作。

录制宏

要录制宏,请执行以下操作:

  • 单击功能区上的“视图”选项卡。
  • 单击“宏”组中的“宏”。
  • 从下拉列表中选择“录制宏”。
Record

将出现“录制宏”对话框。

  • 在“宏名称”框中键入“MyFirstMacro”。

  • 在“说明”框中键入“一个简单的宏”,然后单击“确定”。

Record Macro

请记住,您现在执行的任何击键和鼠标点击都将被记录。

  • 单击单元格B2。

  • 创建表格。

  • 单击工作表中的不同单元格。

  • 单击功能区上的“视图”选项卡。

  • 单击“宏”。

  • 从下拉列表中选择“停止录制”。

Stop Recording

您的宏录制已完成。

第一步单击特定单元格非常重要,因为它指示宏必须在何处开始放置录制的步骤。完成录制后,您必须单击“停止录制”以避免录制不必要的步骤。

运行宏

您可以根据需要多次运行录制的宏。要运行宏,请执行以下操作:

  • 单击新的工作表。

记下活动单元格。在我们的例子中,它是A1。

  • 单击功能区上的“视图”选项卡。

  • 单击“宏”。

  • 从下拉列表中选择“查看宏”。

View

将出现“宏”对话框。

Macro Dialog Box

宏列表中只显示您录制的宏。

  • 单击“宏”对话框中的宏名称“MyFirstMacro”。您在录制宏时键入的说明将显示出来。宏说明允许您识别您录制宏的用途。

  • 单击“运行”按钮。您在录制宏时创建的相同表格将在短短一秒钟内出现。

Macros List

您已经发现了Excel为您提供的节省在平凡任务上花费时间的魔法棒。您将观察到以下内容:

  • 尽管运行宏之前的活动单元格是A1,但表格放置在单元格B2中,因为您已将其录制。

  • 此外,活动单元格变为E2,因为您在停止录制之前单击了该单元格。

您可以在多个工作表中运行宏,在运行宏之前使用不同的活动单元格,并观察与上述相同的条件。只需记下这一点,您稍后将在本教程中了解为什么会发生这种情况。

您还可以进行宏录制,该录制将录制的步骤放置在活动单元格中。随着您在教程中的学习进度,您将学习如何执行此操作。

存储宏

您可能想知道如何保存创建的宏。在此上下文中,您需要了解:

  • 存储宏
  • 保存启用宏的文件

创建宏时,您可以选择存储该特定宏的位置。您可以在“录制宏”对话框中执行此操作。

单击“将宏存储在”框。以下三个选项可用:

  • 此工作簿。
  • 新工作簿。
  • 个人宏工作簿
Store Macro

此工作簿

这是默认选项。宏将存储在您创建宏的当前工作簿中。

新工作簿

虽然此选项可用,但不推荐使用。您将要求Excel将宏存储在不同的新工作簿中,这大多是不必要的。

个人宏工作簿

如果您创建了在工作簿中使用的多个宏,“个人宏工作簿”为您提供了一个将所有宏存储在一个位置的功能。您将在下一章中了解有关此选项的更多信息。

保存启用宏的文件

如果您选择“此工作簿”作为存储宏的选项,则需要将工作簿与宏一起保存。

尝试保存工作簿。默认情况下,您将要求Excel将工作簿保存为.xls文件。Excel显示一条消息,指出Excel功能VB项目无法保存在无宏的工作簿中,如下所示。

This Workbook

注意 − 如果您点击“是”,Excel 将把您的工作簿保存为无宏的 .xls 文件,并且您使用“此工作簿”选项存储的宏将不会被保存。为避免这种情况,Excel 提供了一个选项,可以将您的工作簿保存为启用宏的工作簿,该工作簿将具有 .xlsm 扩展名。

  • 点击警告消息框中的“否”。
  • 在“保存类型”中选择“Excel 启用宏的工作簿 (*.xlsm)”。
  • 点击“保存”。
Save File

您将在本教程后面的章节中了解更多相关内容。

Excel 宏 - 单个工作簿中的宏

Excel 提供了一个功能,可以将所有宏存储在一个工作簿中。该工作簿称为“个人宏工作簿 - Personal.xlsb”。它是一个隐藏的工作簿,存储在您的计算机上,每次打开 Excel 时都会打开。这使您可以从任何工作簿运行您的宏。每台计算机只有一个个人宏工作簿,您不能在计算机之间共享它。您可以从计算机上的任何工作簿查看和运行个人宏工作簿中的宏。

在个人宏工作簿中保存宏

您可以通过在录制宏时将其选择为存储选项,将宏保存到个人宏工作簿中。

在“将宏存储在”类别下的下拉列表中选择“个人宏工作簿”。

Personal Macro
  • 录制您的第二个宏。
  • 在“录制宏”对话框中提供宏详细信息,如下所示。
  • 点击“确定”。
Second Macro

您的录制开始。创建一个如下所示的表格。

Recording Starts
  • 停止录制。

  • 单击功能区上的“视图”选项卡。

  • 单击“宏”。

  • 从下拉列表中选择“查看宏”。将出现“宏”对话框。

View Macros

宏名称前缀为 PERSONAL.XLSB!,表示宏位于个人宏工作簿中。

保存您的工作簿。由于宏不在您的工作簿中,它将保存为 .xls 文件,然后关闭 Excel。

您将收到以下有关保存对个人宏工作簿更改的消息:

Save

点击“保存”按钮。您的宏将保存在计算机上的 Personal.xlsb 文件中。

隐藏/显示个人宏工作簿

个人宏工作簿默认情况下是隐藏的。当您启动 Excel 时,个人宏工作簿会被加载,但您看不到它,因为它已隐藏。您可以按照以下步骤取消隐藏它:

  • 单击功能区上的“视图”选项卡。

  • 点击“窗口”组中的“取消隐藏”。

View Tab

将出现“取消隐藏”对话框。

Unhide

在“取消隐藏工作簿”框中出现 PERSONAL.XLSB,然后点击“确定”。

Personal XLSB

现在您可以查看保存在个人宏工作簿中的宏了。

要隐藏个人宏工作簿,请执行以下操作:

  • 点击个人宏工作簿。
  • 单击功能区上的“视图”选项卡。
  • 点击功能区上的“隐藏”。

运行保存在个人宏工作簿中的宏

您可以从任何工作簿运行保存在个人宏工作簿中的宏。要运行宏,个人宏工作簿是隐藏还是显示都没有区别。

  • 点击“查看宏”。
  • 从宏列表中选择宏名称。
  • 点击“运行”按钮。宏将运行。

在个人宏工作簿中添加/删除宏

您可以通过在录制宏时为“将宏存储在”选项选择它来在个人宏工作簿中添加更多宏,正如您前面所看到的那样。

您可以按照以下步骤删除个人宏工作簿中的宏:

  • 确保个人宏工作簿未隐藏。
  • 在“查看宏”对话框中点击宏名称。
  • 点击“删除”按钮。

如果个人宏工作簿已隐藏,您将收到一条消息,提示“无法编辑隐藏工作簿上的宏”。

Hidden Workbook

取消隐藏个人宏工作簿并删除选定的宏。

宏将不会出现在宏列表中。但是,当您创建一个新宏并将其保存到您的个人工作簿中,或删除其中包含的任何宏时,系统将提示您保存个人工作簿,就像您第一次保存它一样。

Excel宏 - 安全性

您在 Excel 中创建的宏将使用 VBA(Visual Basic for Applications)编程语言编写。您将在后面的章节中学习有关 Excel 宏代码的知识。您知道,当存在可执行代码时,就会存在病毒的威胁。宏也容易受到病毒的攻击。

什么是宏病毒?

编写宏的 Excel VBA 可以访问大多数 Windows 系统调用,并在打开工作簿时自动执行。因此,存在一个潜在的威胁,即病毒被编写为宏并隐藏在 Excel 中,这些病毒在打开工作簿时会被执行。因此,Excel 宏在许多方面都可能对您的计算机非常危险。但是,Microsoft 已经采取了适当的措施来保护工作簿免受宏病毒的侵害。

Microsoft 推出了宏安全功能,以便您可以识别哪些宏是可信的,哪些不可信。

启用宏的 Excel 工作簿

最重要的 Excel 宏安全功能是 - 文件扩展名。

默认情况下,Excel 工作簿将保存为 .xlsx 文件扩展名。您始终可以信任 .xlsx 文件扩展名的工作簿,因为它们无法存储宏,也不会带来任何威胁。

包含宏的 Excel 工作簿将保存为 .xlsm 文件扩展名。它们被称为启用宏的 Excel 工作簿。在打开此类工作簿之前,您应确保其中包含的宏不是恶意软件。为此,您必须确保您可以信任此类型工作簿的来源。

信任启用宏的工作簿的方法

Excel 提供三种信任启用宏的工作簿的方法。

  • 将启用宏的工作簿放在受信任的文件夹中

  • 检查宏是否已数字签名

  • 在打开启用宏的工作簿之前启用安全警报消息

将启用宏的工作簿放在受信任的文件夹中

这是管理宏安全最简单也是最好的方法。Excel 允许您将文件夹指定为受信任位置。将所有启用宏的工作簿放在该受信任文件夹中。您可以打开保存到此位置的启用宏的工作簿,而无需警告或限制。

检查宏是否已数字签名

数字签名确认作者的身份。您可以配置 Excel 以运行来自受信任人员的数字签名宏,而无需警告或限制。如果自作者签名后工作簿已被更改,Excel 还将警告收件人。

在打开启用宏的工作簿之前启用安全警报消息

当您打开工作簿时,Excel 会警告您该工作簿包含宏,并询问您是否要启用它们。如果工作簿的来源可靠,您可以点击“启用内容”按钮。

Security

您可以在 Excel 选项中的信任中心设置这三个选项中的任何一个。

如果您在组织中工作,系统管理员可能已更改默认设置,以防止任何人更改设置。Microsoft 建议您不要更改信任中心的安全设置,因为后果可能是数据丢失、数据盗窃或计算机或网络的安全漏洞。

但是,您可以了解以下部分中的宏安全设置,并检查是否需要更改它们。您必须根据上下文和您对文件来源的了解,凭直觉决定这些选项中的任何一个。

信任中心中的宏安全设置

宏设置位于 Excel 选项中的信任中心中。要访问信任中心,请执行以下操作:

  • 点击功能区上的“文件”选项卡。

  • 点击“选项”。将出现“Excel 选项”对话框。

  • 点击左侧窗格中的“信任中心”。

  • 点击“Microsoft Excel 信任中心”下的“信任中心设置”按钮。

Macro Settings

将出现“信任中心”对话框。

Trust Center

您将在左侧窗格中的 Excel 信任中心看到各种可用选项。您将在以下部分了解与 Excel 宏相关的选项。

宏设置

宏设置位于信任中心中。

Macro Settings

在宏设置下,有四个选项可用。

  • 禁用所有宏而不发出通知 − 如果选择此选项,则禁用宏和有关宏的安全警报。

  • 禁用所有宏并发出通知 − 宏被禁用,但如果存在宏,则会显示安全警报。您可以逐个启用宏。

  • 仅禁用所有宏,但数字签名宏除外 − 宏被禁用,但如果存在宏,则会显示安全警报。但是,如果宏已由受信任的发布者进行数字签名,则如果信任发布者,宏将运行。如果您不信任发布者,系统会通知您启用已签名的宏并信任发布者。

  • 启用所有宏(不推荐,易受宏病毒攻击) − 如果选择此选项,则所有宏都将运行。此设置使您的计算机容易受到潜在恶意代码的攻击。

您在“开发工具”宏设置下还有一个带复选框的其他安全选项。

  • 信任对 VBA 项目对象模型的访问。

    • 此选项允许从自动化客户端以编程方式访问 Visual Basic for Applications (VBA) 对象模型。

    • 此安全选项适用于编写用于自动化 Office 程序并操纵 VBA 环境和对象模型的代码。

    • 这是一个按用户和按应用程序设置,默认情况下拒绝访问,从而阻止未经授权的程序构建有害的自复制代码。

    • 要使自动化客户端能够访问 VBA 对象模型,运行代码的用户必须授予访问权限。要打开访问权限,请选择复选框。

定义受信任位置

如果您认为启用宏的工作簿来自可靠的来源,最好将文件移动到 Excel 识别的受信任位置,而不是将默认信任中心设置更改为安全性较低的宏安全设置。

您可以在信任中心找到受信任的文件夹设置。

在信任中心对话框中点击“受信任的位置”。Microsoft Office 设置的受信任位置将显示在右侧。

Trusted Location

您可以添加新位置、删除现有位置和修改现有位置。Microsoft Office 将把已识别的受信任位置视为打开文件的可靠位置。但是,如果您添加或修改位置,请确保该位置安全。

您还可以找到 Office 不推荐的选项,例如互联网上的位置。

来自可靠来源的数字签名宏

Microsoft 提供了一个选项来容纳数字签名宏。但是,即使宏已数字签名,您也需要确保它来自受信任的发布者。

您将在信任中心找到受信任的发布者。

  • 在信任中心对话框中点击“受信任的发布者”。右侧将出现证书列表,其中包含详细信息 - “颁发给”、“颁发者”和“到期日期”。

  • 选择一个证书并点击“查看”。

Trusted Publishers

将显示证书信息。

正如您在本节前面所了解到的那样,您可以设置一个选项,只有当您信任发布者时才运行数字签名的宏。如果您不信任发布者,系统会通知您启用已签名的宏并信任发布者。

使用警告消息

当您打开的文件中存在宏时,消息栏会显示安全警报。带有盾牌图标的黄色消息栏会警告您宏已被禁用。

Warning Messages

如果您知道宏来自可靠的来源,则可以点击消息栏上的“启用内容”按钮来启用宏。

如果您不希望安全警报,可以禁用消息栏选项。另一方面,您可以启用消息栏选项以提高安全性。

启用/禁用消息栏上的安全警报

您可以按照以下步骤启用/禁用带有消息栏的安全警报:

  • 点击功能区上的“文件”选项卡。
  • 点击“选项”。将出现“Excel 选项”对话框。
  • 点击“信任中心”。
  • 点击“信任中心设置”按钮。
  • 点击“消息栏”。

将显示所有 Office 应用程序的消息栏设置。

Message Bar

在“显示消息栏”下有两个选项。

选项 1 − 当活动内容(例如宏)被阻止时,在所有活动应用程序中显示消息栏。

  • 这是默认选项。当潜在的不安全内容被禁用时,消息栏会出现。

  • 如果您在信任中心宏设置中选择了“在不通知的情况下禁用所有宏”,则此选项不会被选中,并且消息栏不会出现。

Showing Message

选项 2 − 从不显示有关被阻止内容的信息。

如果选择此选项,它将禁用消息栏,并且无论信任中心中的任何安全设置如何,都不会出现有关安全问题的警报。

Blocked

Excel宏 - 绝对引用

Excel 宏可以使用绝对引用或相对引用来录制。使用绝对引用录制的宏将录制的步骤精确地放置在其录制单元格中,而不管活动单元格如何。另一方面,使用相对引用录制的宏可以在工作表的不同部分执行录制的任务。

本章将学习宏的绝对引用。您将在下一章学习相对引用。

假设您每天结束时都必须提交一份关于团队工作的报告,格式如下:

Absolute Reference

现在,报告应放置在单元格 B2 中,并应采用给定的格式。

填写后的示例报告如下所示:

Sample

除了以下单元格中的数据外,您为项目生成的每个报告中的信息都是恒定的。

  • C3 – 报告日期。
  • C13 – 今日完成的任务数量。
  • C14 – 完成的任务总数。
  • C15 – 工作完成百分比。

在这些单元格中,您可以在 C3(报告日期)中使用 Excel 函数 = TODAY () 来放置您的报告日期,无需您干预。此外,在单元格 C15 中,您可以使用公式 C14/C12,并将单元格 C15 格式化为百分比,以便 Excel 为您计算“工作完成百分比”。

这样一来,您只需要填写两个单元格——C13 和 C14。因此,每次创建报告时,最好有其余单元格的信息。这为您节省了时间,您可以只用几分钟时间完成日常的报告工作。

现在,假设您必须为三个项目发送此类报告。您可以想象您可以节省多少时间,并承担当天更多具有挑战性的工作,当然也能获得管理层的赞扬。

您可以通过为每个项目录制一个宏并在日常工作中运行它们来实现这一点,从而在几分钟内生成所需的报告。但是,每次运行宏时,报告都应按上述方式显示在工作表上,而不管活动单元格如何。为此,您必须使用绝对引用。

确保使用绝对引用

要使用绝对引用录制宏,您必须确保从步骤必须开始的单元格开始录制宏。这意味着,在上一节给出的示例中,您需要执行以下操作:

  • 开始录制宏。
  • 创建一个新的工作表。
  • 单击新工作表中 B2 以外的任何单元格。
  • 单击单元格B2。
  • 继续录制宏。

这将为每个新报告创建一个新的工作表,并在每次运行宏时将报告格式放置在单元格 B2 中。

注意 − 以上前三个步骤至关重要。

  • 如果您不创建新的工作表,则运行宏时,它会将您录制的内容放置在同一工作表的同一位置。这不是您想要的。您需要在不同的工作表上拥有每个报告。

  • 如果您在录制开始时没有单击其他单元格,即使活动单元格是 B2,Excel 也会将录制的步骤放在活动单元格中。运行宏时,它会根据活动单元格将录制的报告格式放置在工作表的任何部分。通过显式单击 B2 以外的单元格,然后单击单元格 B2,您可以告诉录制器始终将宏步骤放在单元格 B2 中。

录制宏

您可以使用功能区“视图”选项卡→“宏”下的“录制宏”命令开始录制宏。您也可以单击 Excel 任务栏左侧的“开始录制宏”按钮。

Recording Macro
  • 开始录制宏。“录制宏”对话框将出现。

  • 给出一个有意义的名称来标识宏为特定项目的报告。

  • 在“将宏存储在”下选择“此工作簿”,因为您将仅从此特定工作簿生成报告。

  • 为您的宏提供说明,然后单击“确定”。

Description

您的宏开始录制。

  • 创建一个新的工作表。这确保您的新报告将位于新的工作表上。

  • 单击新工作表中 B2 以外的任何单元格。

  • 单击单元格 B2。这确保宏始终将录制的步骤放在 B2 中。

  • 创建报告的格式。

  • 填写项目报告的静态信息。

  • 在 C3 中放置 = TODAY (),在 C15 单元格中放置 = C14/C12。

  • 设置日期单元格的格式。

停止录制宏。

Stop Record

您可以使用功能区“视图”选项卡→“宏”下的“停止录制”命令停止录制宏,也可以单击 Excel 任务栏左侧的“停止录制宏”按钮。

Taskbar

您的项目报告宏已准备就绪。将工作簿另存为宏启用工作簿(扩展名为 .xlsm)。

运行宏

您只需运行宏即可在几秒钟内生成任意数量的报告。

  • 单击功能区上的“视图”按钮。
  • 单击“宏”。
  • 从下拉列表中选择“查看宏”。将出现“宏”对话框。
  • 单击宏 Report_ProjectXYZ。
  • 单击“运行”按钮。

将在您的工作簿中创建一个新的工作表,并在其中的单元格 B2 中创建报告模板。

Excel宏 - 相对引用

相对引用宏记录活动单元格的偏移量。如果您必须在工作表的各个位置重复步骤,此类宏将非常有用。

假设您需要分析从 280 个选区收集的选民数据。对于每个选区,收集以下详细信息:

  • 选区名称。
  • 选区总人口。
  • 选区选民人数。
  • 男性选民人数,以及
  • 女性选民人数。

数据以如下所示的工作表提供给您。

Relative References

无法按上述格式分析数据。因此,请按如下所示的表格排列数据。

Table

如果您尝试按上述格式排列给定的数据:

  • 排列来自 280 个选区的数据需要大量时间

  • 容易出错

  • 这成为一项枯燥的任务,使您无法专注于技术方面

解决方案是录制一个宏,以便您可以在几秒钟内完成任务。宏需要使用相对引用,因为您在排列数据时会向下移动行。

使用相对引用

为了让宏录制器知道它必须使用相对引用,请执行以下操作:

  • 单击功能区上的“视图”选项卡。

  • 单击“宏”。

  • 单击“使用相对引用”。

Relative Reference

准备数据格式

排列上述数据的第一个步骤是在带有标题的表格中定义数据格式。

创建如下所示的标题行。

Preparing

录制宏

按如下方式录制宏:

  • 单击“录制宏”。

  • 为宏指定一个有意义的名称,例如 DataArrange。

  • 在单元格 B4 中键入 = row ()- 3。这是因为序号是当前行号减去上面的 3 行。

  • 剪切单元格 B5、B6、B7、B8 和 B9,并将其分别粘贴到单元格 C4 到 C8 中。

  • 现在单击单元格 B5。您的表格如下所示。

Macro Recording

第一组数据排列在表格的第一行。删除行 B6 – B11 并单击单元格 B5。

First Data Set

您可以看到活动单元格是 B5,下一组数据将放在此处。

停止录制宏。您的数据排列宏已准备就绪。

运行宏

您需要重复运行宏才能完成表格中数据的排列,如下所示。

活动单元格是 B5。运行宏。第二组数据将排列在表格的第二行,活动单元格将变为 B6。

Macro Running

再次运行宏。第三组数据将排列在表格的第三行,活动单元格将变为 B7。

Run the Macro

每次运行宏时,活动单元格都会前进到下一行,从而促进了在适当位置重复录制的步骤。这是因为宏中使用了相对引用。

运行宏,直到所有 280 组数据都排列到表格中的 280 行中。此过程需要几秒钟,并且由于步骤是自动化的,因此整个练习都不会出错。

Excel宏 - VBA

Excel 将宏存储为 Excel VBA(Visual Basic for Applications)代码。录制宏后,您可以查看生成的代码、修改它、复制其一部分等。如果您熟悉使用 VBA 编程,甚至可以自己编写宏代码。

您将在“使用 VBA 编辑器创建宏”一章中学习如何通过编写 VBA 代码来创建宏。您将在“编辑宏”一章中学习如何通过编辑 VBA 代码来修改宏。您将在本章学习 Excel VBA 功能。

功能区上的“开发工具”选项卡

您可以从功能区上的“开发工具”选项卡访问 VBA 中的宏代码。

Developer

如果您在功能区上找不到“开发工具”选项卡,则需要按如下方式添加它:

  • 右键单击功能区。

  • 从下拉列表中选择“自定义功能区”。

Customize Ribbon

将出现“Excel 选项”对话框。

  • 从“自定义功能区”下拉列表中选择“主选项卡”。

  • 选中“主选项卡”列表中的“开发工具”框,然后单击“确定”。“开发工具”选项卡将出现。

Excel Options

宏的开发工具命令

您需要了解“开发工具”选项卡下用于宏的命令。

单击功能区上的“开发工具”选项卡。“代码”组中提供以下命令:

  • Visual Basic
  • 录制宏
  • 使用相对引用
  • 宏安全性
Controls

“Visual Basic”命令用于在 Excel 中打开 VBA 编辑器,“宏”命令用于查看、运行和删除宏。

您已经在前面的章节中学习了 VBA 编辑器以外的命令。

VBA 编辑器

VBA 编辑器或 VBE 是 Excel 中 VBA 的开发平台。

打开本教程前面章节“创建简单的宏”中保存的工作簿 MyFirstMacro.xlsm。

您可以通过以下两种方式之一打开 VBE:

选项 1 − 单击功能区“开发工具”选项卡“代码”组中的“Visual Basic”。

VBA Editor

选项 2 − 单击单击“视图”选项卡→“宏”→“查看宏”时出现的“宏”对话框中的“编辑”。

View Macro

VBE 将在新窗口中出现。

VBE

您的 Excel 宏启用工作簿名称将以前缀“Microsoft Visual Basic for Applications”出现。

在VBE中,您将找到以下内容:

  • 项目资源管理器。
  • 属性窗口。
  • 包含代码的模块窗口。

项目资源管理器

项目资源管理器是您查找VBA项目名称的地方。在一个项目下,您会找到工作表名称和模块名称。当您单击模块名称时,相应的代码会出现在右侧的窗口中。

属性窗口

属性是VBA对象的参数。当您拥有一个对象,例如命令按钮时,它的属性将显示在属性窗口中。

包含代码的模块窗口

宏的代码将存储在VBA中的模块中。当您选择一个宏并单击“编辑”时,宏的代码将显示在相应的模块窗口中。

Excel宏 - 理解代码

当您录制宏时,Excel将其存储为VBA代码。您可以在VBA编辑器中查看此代码。如果您拥有大量的Excel VBA知识,您可以理解并修改此代码。您可以参考本教程库中的Excel VBA教程来掌握这门语言。

但是,您仍然可以在Excel VBA编辑器中查看宏代码,并将其与您在宏中记录的步骤进行匹配。在本教程中,您将学习如何查看和理解您创建的第一个宏——MyFirstMacro的代码。

在VBA编辑器中查看宏代码

要查看宏代码,请执行以下操作:

  • 打开存储宏的工作簿。
  • 单击功能区上的“视图”选项卡。
  • 单击“宏”。
  • 从下拉列表中选择“查看宏”。
Viewing

将出现“宏”对话框。

  • 在宏列表中单击MyFirstMacro。
  • 单击“编辑”按钮。
Edit

VBA编辑器将打开,并显示MyFirstMacro宏的代码。

Macro

理解录制的动作作为代码的一部分

您可以浏览宏代码,并将它们映射到您记录的步骤。

  • 开始阅读代码。
  • 将代码映射到记录的步骤。
Understanding

向下滚动代码以查看更多代码。或者,您可以放大代码窗口。

Enlarge Code

观察代码很简单。如果您学习Excel VBA,您可以通过在VBA编辑器中编写代码来创建宏。

您将在“使用VBA编辑器创建宏”一章中学习如何编写VBA代码来创建宏。

Excel宏——将宏分配给对象

假设您创建了一个需要多次执行的宏。例如,您为绝对引用和相对引用创建的宏。那么,如果您能够通过单击鼠标来运行宏,将会很容易。您可以通过将宏分配给对象(例如形状、图形或控件)来实现此目的。

在本节中,您将学习如何在工作簿中包含对象并将宏分配给它。

回顾一下您使用相对引用创建的宏。该宏将一列中给定的数据排列到表格中,以方便数据分析。

Recall

将宏分配给形状

您可以在工作表中插入一个有意义的形状,并带有自解释性文本,单击该形状时将运行分配给它的宏。

  • 单击功能区上的**插入**选项卡。

  • 单击“插图”组中的**形状**。

  • 从下拉列表中选择任何现成的形状。例如,流程图形状——准备,因为您正在准备数据。

Assigning

绘制形状并对其进行格式化。

Draw Shape
  • 右键单击形状,然后从下拉列表中选择**编辑文本**。

  • 在形状内键入文本 - 运行宏。

  • 设置文本格式。

Edit Text
  • 右键单击形状。
  • 从下拉列表中选择“指定宏”。
Assign Macro

将出现“指定宏”对话框。单击宏名称,即RelativeMacro,然后单击“确定”。

Macro Name

宏已分配给形状。

  • 单击您必须运行宏的单元格,例如B4。

  • 将光标(指针)移动到形状上。光标(指针)将变为手指形状。

Cursor

现在单击形状。宏将运行。只需重复单击鼠标即可多次运行宏,您就可以在几秒钟内完成将数据排列到表格中的任务。

将宏分配给图形

您可以在工作表中插入图形并为其分配宏。可以选择图形来可视化您的宏。例如,您可以使用表格图形来表示宏将数据排列到表格中。

  • 单击功能区上的“插入”选项卡。
  • 单击“插图”组中的“图片”。
  • 选择包含图形的文件。
Graphic

其余步骤与上一节中给出的形状步骤相同。

将宏分配给控件

插入VBA控件并为其分配宏可以使您的工作看起来更专业。您可以从功能区上的“开发工具”选项卡插入VBA控件。

  • 单击功能区上的**开发工具**选项卡。

  • 单击“控件”组中的**插入**。

Insert

从下拉列表中选择**窗体控件**下的“按钮”图标,如下面的屏幕截图所示:

Form Controls
  • 单击工作表上要插入按钮控件的单元格。“指定宏”对话框将出现。

  • 单击宏名称,然后单击“确定”。

Button Control

将插入具有已分配宏的控件按钮。

Control Button
  • 右键单击按钮。
  • 单击“编辑文本”。
  • 键入 - 运行宏。
  • 设置文本格式并调整按钮大小。
Type Run Macro

您可以通过反复单击按钮来运行宏任意多次。

使用窗体控件是与用户交互的一种简单有效的方法。您将在“与用户交互”一章中学习更多相关内容。

Excel宏 - 运行宏

在工作簿中执行宏的方法有多种。宏将保存在您启用了宏的工作簿中或您个人宏工作簿中,您可以像之前学习的那样从任何工作簿访问它。

您可以通过以下方式运行宏:

  • 从“视图”选项卡运行宏
  • 按Ctrl键加快捷键运行宏
  • 单击快速访问工具栏上的按钮运行宏
  • 单击功能区上自定义组中的按钮运行宏
  • 单击图形对象运行宏
  • 从“开发工具”选项卡运行宏
  • 从VBA编辑器运行宏

从“视图”选项卡运行宏

您已经学习了如何从功能区上的“视图”选项卡运行宏。快速回顾一下:

  • 单击功能区上的“视图”选项卡。
  • 单击“宏”。
  • 从下拉列表中选择“查看宏”。
Active Cell

将出现“宏”对话框。

  • 单击宏名称。
  • 单击“运行”按钮。
Dialog Box

使用快捷键运行宏

您可以为宏分配快捷键(Ctrl + 键)。您可以在“创建宏”对话框中录制宏时执行此操作。否则,您可以稍后在“宏选项”对话框中添加它。

录制宏时添加快捷键

  • 单击“视图”选项卡。
  • 单击“宏”。
  • 从下拉列表中选择“录制宏”。

将出现“创建宏”对话框。

  • 键入宏名称
  • 在快捷键下Ctrl + 旁边的框中键入一个字母,例如q。
Adding

在宏选项中添加快捷键

  • 单击“视图”选项卡。
  • 单击“宏”。
  • 从下拉列表中选择“查看宏”。

将出现“宏”对话框。

  • 选择宏名称。
  • 单击“选项”按钮。
Shortcut Key

将出现“宏选项”对话框。在快捷键下Ctrl + 旁边的框中键入一个字母,例如q。单击“确定”。

Type a Letter

要使用快捷键运行宏,请同时按Ctrl键和q键。宏将运行。

**注意** - 您可以为宏的快捷键使用任何小写或大写字母。如果您使用任何Ctrl + 字母组合作为Excel快捷键,您将覆盖它。例如Ctrl+C、Ctrl+V、Ctrl+X等。因此,在选择字母时请谨慎。

通过快速访问工具栏运行宏

您可以将宏按钮添加到快速访问工具栏,并通过单击它来运行宏。当您将宏存储在个人宏工作簿中时,此选项将非常有用。添加的按钮将出现在您打开的任何工作簿的快速访问工具栏上,从而使您更容易运行宏。

假设您的个人宏工作簿中有一个名为MyMacro的宏。

要将宏按钮添加到快速访问工具栏,请执行以下操作:

  • 右键单击快速访问工具栏。

  • 从下拉列表中选择**自定义快速访问工具栏**。

Quick Access

将出现“Excel选项”对话框。在“从以下位置选择命令”下的类别中选择“宏”。

Commands

宏列表将出现在宏下。

  • 单击PERSONAL.XLSB!MyMacro。
  • 单击“添加”按钮。
List

宏名称将出现在右侧,带有宏按钮图像。

要更改宏按钮图像,请执行以下步骤:

  • 单击右侧框中的宏名称。
  • 单击“修改”按钮。
Modify

将出现**修改按钮**对话框。选择一个符号将其设置为按钮的图标。

Icon

修改在您将指针放在快速访问工具栏上的按钮图像上时显示的显示名称,例如,对于此示例,将其修改为“运行MyMacro”。单击“确定”。

MyMacro

宏名称和图标符号将在右侧窗格中更改。单击“确定”。

Symbol

宏按钮将出现在快速访问工具栏上,并且当您将指针放在按钮上时,将显示宏显示名称。

Pointer

要运行宏,只需单击快速访问工具栏上的宏按钮即可。

在自定义组中运行宏

您可以在功能区上添加一个自定义组和一个自定义按钮,并将您的宏分配给该按钮。

  • 右键单击功能区。
  • 从下拉列表中选择“自定义功能区”。
Custom Group

将出现“Excel 选项”对话框。

  • 在“自定义功能区”下选择“主选项卡”。
  • 单击“新建选项卡”。
Excel Option

“新建选项卡(自定义)”将出现在“主选项卡”列表中。

  • 单击“新建选项卡(自定义)”。
  • 单击“新建组”按钮。

“新建组(自定义)”将出现在“新建选项卡(自定义)”下。

  • 单击“新建选项卡(自定义)”。
  • 单击“重命名”按钮。
Custom

将出现“重命名”对话框。键入要在功能区上显示的主选项卡的名称,例如 - 我的宏,然后单击“确定”。

Rename

注意 − 功能区上的所有主选项卡均为大写字母。您可以自行决定使用大写或小写字母。我选择使用小写字母并大写单词首字母,以便使其在标准选项卡中脱颖而出。

新的选项卡名称更改为“我的宏 (自定义)”。

  • 单击“新建组 (自定义)”。
  • 单击“重命名”按钮。
New Group

将出现重命名对话框。在“显示名称”对话框中键入组名称,然后单击“确定”。

Display Name

新的组名称更改为“个人宏 (自定义)”。

单击左侧窗格中从下列命令中选择下的“宏”。

Commands from
  • 从宏列表中选择您的宏名称,例如 – MyFirstMacro。
  • 单击“添加”按钮。
Macro List

宏将添加到“个人宏 (自定义)”组下。

Personal Macros
  • 单击列表中的“我的宏 (自定义)”。
  • 单击箭头可向上或向下移动选项卡。
Arrows

选项卡在主选项卡列表中的位置决定了它在功能区中的放置位置。单击“确定”。

Position

您的自定义选项卡 – “我的宏”将显示在功能区上。

单击选项卡 - “我的宏”。“个人宏”组将显示在功能区上。“MyFirstMacro”将显示在“个人宏”组中。要运行宏,只需单击“个人宏”组中的“MyFirstMacro”即可。

Click Tab

通过单击对象运行宏

您可以在工作表中插入对象(例如形状、图形或 VBA 控件)并为其分配宏。要运行宏,只需单击该对象即可。

有关使用对象运行宏的详细信息,请参阅章节 – 将宏分配给对象。

从“开发工具”选项卡运行宏

您可以从“开发工具”选项卡运行宏。

  • 单击功能区上的“开发工具”选项卡。
  • 单击“宏”。
Developer Tab

将出现“宏”对话框。单击宏名称,然后单击“运行”。

Click Run

从VBA编辑器运行宏

您可以按如下方式从 VBA 编辑器运行宏:

  • 单击功能区上的“运行”选项卡。
  • 从下拉列表中选择“运行子程序/用户窗体”。
UserForm

使用VBA编辑器创建宏

您可以通过在 VBA 编辑器中编写代码来创建宏。在本节中,您将学习在何处以及如何编写宏代码。

VBA 对象和模块

在开始编写宏代码之前,请了解 VBA 对象和模块。

  • 打开包含您的第一个宏的启用宏的工作簿。
  • 单击功能区上的“开发工具”选项卡。
  • 单击“代码”组中的“Visual Basic”。
Objects

VBA 编辑器窗口将打开。

Window Opens

您将在“项目资源管理器”窗口中看到以下内容:

  • 您的启用宏的工作簿 – MyFirstMacro.xlsm 将显示为 VBA 项目。

  • 所有工作表和工作簿都将作为 Microsoft Excel 对象显示在项目下。

  • Module1 显示在“模块”下。您的宏代码位于此处。

  • 单击 Module1。

  • 单击功能区上的“视图”选项卡。

  • 从下拉列表中选择“代码”。

Code

您的宏代码将显示。

Code of Macro

通过编码创建宏

接下来,在同一工作簿中创建第二个宏 – 这次通过编写 VBA 代码。

您可以分两个步骤执行此操作:

  • 插入命令按钮。

  • 编写代码,说明单击命令按钮时要执行的操作。

插入命令按钮

  • 创建一个新的工作表。

  • 单击新工作表。

  • 单击功能区上的“开发工具”按钮。

  • 单击“控件”组中的“插入”。

  • 窗体控件中选择按钮图标。

Inserting Command
  • 单击要在其中放置命令按钮的工作表。
  • 将出现“分配宏”对话框。
Button1_Click

Visual Basic 编辑器将出现。

Visual Basic

您将看到以下内容:

  • 在“项目资源管理器”中插入了一个新模块 – Module2。
  • 出现标题为 Module2 (代码) 的代码窗口。
  • 在 Module2 代码中插入了一个子过程 Button1_Click ()。

编写宏代码

您的编码已由 VBA 编辑器本身完成了一半。

例如,在子过程 Button1_Click () 中键入 MsgBox “祝您一切顺利!”。单击命令按钮时,将显示包含给定字符串的消息框。

Message Box

就是这样!您的宏代码已准备好运行。您知道,VBA 代码不需要编译,因为它使用解释器运行。

从 VBA 编辑器运行宏

您可以从 VBA 编辑器本身测试您的宏代码。

  • 单击功能区上的“运行”选项卡。

  • 从下拉列表中选择“运行子程序/用户窗体”。您键入的字符串的消息框将显示在您的工作表中。

Macro From VBA

您可以看到按钮已被选中。单击消息框中的“确定”。您将返回到 VBA 编辑器。

从工作表运行宏

您可以从工作表中运行您编写的宏任意多次。

  • 单击工作表上的某处。
  • 单击按钮。消息框将显示在工作表上。
Macro From Worksheet

您已通过编写 VBA 代码创建了一个宏。正如您所看到的,VBA 编码很简单。

Excel宏 - 编辑

您已经在上一节中学习了如何在 VBA 编辑器中编写宏代码。您可以编辑宏代码、重命名宏和删除宏。

如果您掌握了 Excel VBA,编写或修改宏代码将是一项简单的任务。您可以根据需要编辑宏代码。如果您只想对宏代码进行一些简单的更改,您甚至可以将宏代码从一个位置复制到另一个位置。

复制宏代码

您已在启用宏的工作簿 MyFirstMacro.xlsm 中创建了两个宏 – MyFirstMacro 和 Button1_Click。您通过记录步骤创建了第一个宏,通过编写代码创建了第二个宏。您可以将第一个宏中的代码复制到第二个宏中。

  • 打开工作簿 MyFirstMacro.xlsm。

  • 单击功能区上的“开发工具”选项卡。

  • 单击“Visual Basic”。Visual Basic 编辑器将打开。

  • 打开 Module1(MyFirstMacro 宏代码)和 Module2(Button1_Click () 宏代码)的代码。

  • 单击功能区上的“窗口”选项卡。

  • 从下拉列表中选择“水平平铺”。

您可以在平铺的窗口中查看两个宏的代码。

Copying
  • 复制 Module2 代码中的 MsgBox 行。

  • 将其粘贴到该行的上方。

  • 修改字符串为:

    MsgBox “Hello World!”

  • 从 Module1 复制以下代码。

Copy Code

将其粘贴到 Module2 代码中,位于两行 MsgBox 代码之间。

MsgBox
  • 单击“保存”图标以保存代码。

  • 单击 Excel 表格中的按钮。将出现一个消息框,显示消息 - Hello World!单击“确定”。

Hello World

表格数据将出现(根据您复制的代码),并出现包含消息“祝您一切顺利!”的消息框。

Table Data

您只需几个步骤即可修改代码。对于初学者来说,这是最简单的任务。

重命名宏

假设您想从除包含命令按钮的工作表之外的任何工作表运行已编辑的宏。您可以通过重命名宏来实现这一点,而无需单击按钮。

  • 单击功能区上的“视图”选项卡。
  • 单击“宏”。
  • 从下拉列表中选择“查看宏”。

将出现“宏”对话框。

  • 单击宏名称 – Button1_Click。
  • 单击“编辑”按钮。
Renaming Macro

宏代码将显示在 VBA 编辑器中。

将 Sub 行中显示的名称从 Button1_Click 更改为 RenamedMacro。保留 Sub 和括号不变。

RenamedMacro

打开“宏”对话框。宏名称将显示为您重命名的名称。

Open Macro
  • 单击 RenamedMacro。
  • 单击“运行”按钮。宏将运行。现在不需要单击按钮了。

删除宏

您可以删除您已记录或编码的宏。

  • 打开“宏”对话框。
  • 单击宏名称。
  • 点击“删除”按钮。
Deleting Macro

将出现删除确认消息。

Delete Confirmation

如果您确定要删除宏,请单击。否则,单击“否”。

Excel宏 - 用户窗体

有时,您可能需要反复从其他人那里收集信息。Excel VBA 提供了一种简单的方法来处理此任务 - **用户窗体**。与您填写的任何其他窗体一样,用户窗体使您能够轻松理解需要提供哪些信息。用户窗体友好易用,因为它提供的控件是不言自明的,并在必要时附带其他说明。

用户窗体的主要优点是您可以节省在填写信息的方式和内容上花费的时间。

创建用户窗体

要创建用户窗体,请按如下步骤操作:

  • 单击功能区上的“开发工具”选项卡。
  • 单击“Visual Basic”。将打开工作簿的 Visual Basic 窗口。
  • 单击“插入”,
  • 从下拉列表中选择“用户窗体”。
Creating UserForm

用户窗体将显示在窗口的右侧。

UserForm Appears

了解用户窗体

最大化 UserForm.xlsx – UserForm1 窗口。

您现在处于设计模式。您可以在用户窗体上插入控件并为相应的操作编写代码。控件位于工具箱中。用户窗体的属性位于“属性”窗口中。“UserForm1”(用户窗体的标题)在“项目资源管理器”中的“窗体”下给出。

Understanding UserForm
  • 在“属性”窗口中将用户窗体的标题更改为“项目报告 – 每日”。
  • 将用户窗体的名称更改为 ProjectReport。
ProjectReport

更改将反映在用户窗体、属性和项目资源管理器中。

工具箱中的控件

用户窗体将具有不同的组件。当您单击任何组件时,您将获得有关信息提供方式和内容的说明,或者您将获得可供选择的选项。所有这些都是通过用户窗体工具箱中的 ActiveX 控件提供的。

Excel 提供两种类型的控件 – 窗体控件和 ActiveX 控件。您需要了解这两种控件之间的区别。

窗体控件

窗体控件是 Excel 原生的控件,与早期版本的 Excel 兼容,从 Excel 5.0 版本开始。窗体控件也设计用于 XLM 宏工作表。

您可以使用窗体控件运行宏。您可以将现有宏分配给控件,或编写或记录新宏。单击控件时,将运行宏。您已经学习了如何在工作表中从窗体控件插入命令按钮以运行宏。但是,这些控件不能添加到用户窗体。

ActiveX 控件

ActiveX 控件可用于 VBA 用户窗体。ActiveX 控件具有广泛的属性,您可以使用这些属性来自定义其外观、行为、字体和其他特性。

用户窗体工具箱中包含以下 ActiveX 控件:

  • 指针
  • 标签
  • 文本框
  • 组合框
  • 列表框
  • 复选框
  • 单选按钮
  • 框架
  • 切换按钮
  • 命令按钮
  • 选项卡条
  • 多页
  • 滚动条
  • 微调按钮
  • 图像

除了这些控件之外,Visual Basic 还提供 MsgBox 函数,可用于显示消息和/或提示用户执行操作。

在接下来的几节中,您将了解这些控件和 MsgBox。然后,您将能够选择设计用户窗体所需的控件。

标签

您可以使用标签来标识目的,方法是显示描述性文本,例如标题、字幕和/或简短说明。

示例

Label

文本框

您可以使用矩形框文本框来键入、查看或编辑文本。您还可以将文本框用作静态文本字段,用于显示只读信息。

示例

TextBox

列表框

列表框 (ListBox) 用于显示一个或多个文本项目列表,用户可以从中选择。当需要显示数量众多且内容或数量变化较大的选项时,使用列表框。

  • 在用户窗体 (UserForm) 上插入一个列表框。
  • 单击列表框。
  • 在列表框的属性窗口中,将“名称”(Name) 属性设置为“ProjectCodes”。

列表框有三种类型:

  • 单选列表框 - 单选列表框只允许选择一个选项。在这种情况下,列表框类似于一组单选按钮,但列表框可以更有效地处理大量项目。

  • 多选列表框 - 多选列表框允许选择一个选项或连续(相邻)的多个选项。

  • 扩展选择列表框 - 扩展选择列表框允许选择一个选项、连续的多个选项或不连续(或不相连)的多个选项。

您可以在属性窗口中选择其中一种类型的列表框。

ListBox
  • 右键单击用户窗体。
  • 从下拉列表中选择“查看代码”(View Code)。用户窗体的代码窗口将打开。
  • 单击代码窗口右上角的“初始化”(Initialize)。
  • 在 `Private Sub UserForm_Initialize()` 下输入以下代码:
ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5") 

Initialize
  • 单击功能区上的“运行”选项卡。
  • 从下拉列表中选择“运行子程序/用户窗体”。
Select Run

接下来,您可以编写代码来处理列表中项目被选择的动作。或者,您也可以只显示选定的文本,例如在报表中填充项目代码的情况。

组合框

您可以使用组合框 (ComboBox),它结合了文本框和列表框,创建一个下拉列表框。组合框比列表框更紧凑,但用户需要单击向下箭头才能显示项目列表。使用组合框只能从列表中选择一个项目。

  • 在用户窗体上插入一个组合框。
  • 单击组合框。
  • 在组合框的属性窗口中,将“名称”(Name) 属性设置为“ProjectCodes2”。
ComboBox
  • 右键单击用户窗体。
  • 从下拉列表中选择“查看代码”(View Code)。
  • 用户窗体的代码窗口将打开。

输入以下代码:

ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5") 

Code Window
  • 单击功能区上的“运行”选项卡。
  • 从下拉列表中选择“运行子程序/用户窗体”。
Run Tab

单击向下箭头以显示项目列表。

Click Down Arrow

单击所需的项目,例如“Project2016-5”。选定的选项将显示在组合框中。

Required Item

复选框

您可以使用复选框来选择一个或多个选项,通过单击框来选择。选项将有标签,您可以清楚地看到选择了哪些选项。

复选框可以有两种状态:

  • 选中(打开),在框中用勾号表示
  • 未选中(关闭),在框中为空

为了节省空间,您可以在组合框中使用复选框来选择选项。在这种情况下,复选框也可以有第三种状态:

  • 混合,表示选中和未选中状态的组合,在框中用黑点表示。这将用于指示在带有复选框的组合框中进行了多个选择。

  • 如下所示在用户窗体上插入复选框。

CheckBox
  • 单击功能区上的“运行”选项卡。
  • 从下拉列表中选择“运行子程序/用户窗体”。
  • 单击您选择的选项对应的框。
Boxes

单选按钮

您可以使用单选按钮,也称为选项按钮,在一个有限的互斥选项集中进行单选。单选按钮通常包含在一个分组框或框架中。

单选按钮用一个小圆圈表示。单选按钮可以有以下两种状态:

  • 选中(打开),在圆圈中用点表示
  • 未选中(关闭),圆圈为空白

框架

您可以使用框架控件,也称为分组框,将相关的控件组合成一个视觉单元。通常情况下,单选按钮、复选框或密切相关的控件会分组在一个框架控件中。

框架控件用一个带有可选标签的矩形对象表示。

  • 插入一个标题为“选择”的框架。

  • 在框架控件中插入两个标题分别为“是”和“否”的单选按钮。“是”和“否”选项是互斥的。

Frame
  • 单击功能区上的“运行”选项卡。
  • 从下拉列表中选择“运行子程序/用户窗体”。
  • 单击您选择的选项。
Selected Option

切换按钮

您可以使用切换按钮来指示状态,例如“是”或“否”,或模式,例如“打开”或“关闭”。单击切换按钮时,它会在启用和禁用状态之间切换。

如下所示在用户窗体上插入一个切换按钮:

TogglebButton
  • 单击功能区上的“运行”选项卡。

  • 从下拉列表中选择“运行子程序/用户窗体”(Run Sub/UserForm)。切换按钮默认处于启用状态。

Default

单击切换按钮。切换按钮将被禁用。

Toggle Button

如果再次单击切换按钮,它将被启用。

命令按钮

您可以使用命令按钮来运行宏,当用户单击它时执行某些操作。您已经学习了如何在工作表上使用命令按钮来运行宏。

命令按钮也称为按钮。如下所示在用户窗体上插入一个命令按钮:

CommandButton
  • 右键单击命令按钮。
  • 在 `Sub Commandbutton1_click()` 中输入以下代码:
ProjectCodes2.DropDown 

CommandButton1
  • 单击功能区上的“运行”选项卡。
  • 从下拉列表中选择“运行子程序/用户窗体”。
Daily Report

单击命令按钮。组合框的下拉列表将打开,因为这是您在代码中编写的操作。

Combo Box

选项卡条

您可以在用户窗体上插入一个类似于 Excel 选项卡的选项卡条。

滚动条

您可以使用滚动条通过单击滚动箭头或拖动滚动框来滚动浏览一系列值。

通过在所需位置绘制滚动条并调整其长度,在用户窗体上插入滚动条。

ScrollBar
  • 右键单击滚动条。
  • 从下拉列表中选择“查看代码”(View Code)。代码窗口将打开。
  • 在 `Sub ScrollBar1_Scroll()` 下添加以下代码:
TextBox2.Text = "Scrolling Values" 

Scrolling Value
  • 单击功能区上的“运行”选项卡。
  • 从下拉列表中选择“运行子程序/用户窗体”。
ScrollBar Report

拖动滚动框。文本框中将显示“滚动值”,因为您已将其指定为滚动条滚动的操作。

Text Box

MsgBox()

您可以使用 MsgBox() 函数在单击某个内容时显示消息。它可以是指南、某些信息、警告或错误警报。

例如,当您开始滚动滚动框时,可以显示一条消息,指示值正在滚动。

MsgBox Function

消息框图标显示

您可以使用消息框图标显示来表达特定消息。您有多个消息框图标可供选择:

  • 在 `ScrollBar1_scroll` 下输入以下代码:
MsgBox "Select Ok or Cancel", vbOKCancel, "OK  - Cancel Message" 
MsgBox "It's an Error!", vbCritical, "Run time result" 
MsgBox "Why this value", vbQuestion, "Run time result" 
MsgBox "Value Been for a Long Time", vbInformation, "Run time result" 
MsgBox "Oh Is it so", vbExclamation, "Run time result" 
  • 单击功能区上的“运行”选项卡。
  • 从下拉列表中选择“运行子程序/用户窗体”。
  • 拖动滚动框。

您将依次获得以下消息框。

Message Boxes

设计用户窗体

现在,您已经了解了可以在用户窗体上使用的不同控件。选择控件,如果需要,将它们分组,并根据一些有意义的顺序将它们排列在用户窗体上。编写与相应控件对应的操作代码。

请参阅本教程库中的 VBA 教程,了解用户窗体的示例。

Excel宏 - 调试代码

您已经学习到宏作为 VBA 代码存储在 Excel 中。您还学习了可以直接在 VBA 编辑器中编写代码来创建宏。但是,与任何代码一样,宏代码也可能存在缺陷,并且宏可能无法按预期运行。

这需要检查代码以查找缺陷并进行更正。在软件开发中,此活动称为调试。

VBA 调试

VBA 编辑器允许您暂停代码执行并执行任何所需的调试任务。以下是一些您可以执行的调试任务。

  • 单步执行代码
  • 使用断点
  • 在代码中后退或前进
  • 不单步执行每一行代码
  • 单步执行代码时查询任何内容
  • 停止执行

这些只是您可能在 VBA 的调试环境中执行的一些任务。

单步执行代码

调试的第一步是在执行代码时单步执行代码。如果您知道代码的哪个部分可能导致缺陷,您可以跳转到该代码行。否则,您可以逐行执行代码,在代码中后退或前进。

您可以从工作簿中的宏对话框或从 VBA 编辑器本身单步进入代码。

从工作簿单步进入代码

要从工作簿单步进入代码,请执行以下操作:

  • 单击功能区上的“视图”选项卡。
  • 单击“宏”。
  • 从下拉列表中选择“查看宏”。

将出现“宏”对话框。

  • 单击宏名称。
  • 单击“单步进入”按钮。
Step into

VBA 编辑器打开,宏代码出现在代码窗口中。宏代码中的第一行将以黄色突出显示。

Macro Code

从 VBA 编辑器单步进入代码

要从 VBA 编辑器单步进入代码,请执行以下操作:

  • 单击功能区上的“开发工具”选项卡。
  • 单击“Visual Basic”。VBA 编辑器打开。
  • 单击包含宏代码的模块。

宏代码将出现在代码窗口中。

Stepping
  • 单击功能区上的“调试”选项卡。

  • 从下拉列表中选择“单步进入”

Dropdown

将突出显示宏代码中的第一行。代码处于调试模式,并且“调试”下拉列表中的选项将变为活动状态。

Active

在代码中后退或前进

您可以通过选择“单步执行”或“单步跳出”在代码中前进或后退。

不单步执行每一行代码

如果您确定需要讨论的代码的潜在部分,可以通过选择“运行到光标处”来避免单步执行每一行代码。

使用断点

或者,您可以在代码的特定行设置断点并执行代码,观察每个断点处的结果。您可以根据需要切换断点和清除所有断点。

使用监视

在调试过程中,您可以添加监视以评估表达式并在变量达到特定值时停止执行。这意味着您配置一个监视表达式,该表达式将被监视,直到其为真,然后宏将停止并使您进入中断模式。VBA 提供了几种监视类型供您选择,以便完成您想要完成的任务。

停止执行

在调试过程中,在任何时候,如果您发现了代码出错的线索,都可以停止执行以进一步分析。

如果您是一位经验丰富的开发人员,调试术语对您来说很熟悉,并且 VBA 编辑器的调试选项使您的工作更轻松。否则,如果您已经学习了 VBA 并理解了代码,那么掌握这项技能也不会花费太长时间。

Excel宏 - 配置宏

您可以录制宏并将其保存为“Auto_Open”名称,以便在打开包含此宏的工作簿时运行它。

您还可以编写 VBA 代码来实现相同的目的,使用工作簿的 Open 事件。每次打开工作簿时,Open 事件都会运行 `Workbook_Open()` 子过程中的代码。

录制 Auto_Open 宏

您可以按如下方式录制 Auto_Run 宏:

  • 单击功能区上的“视图”选项卡。
  • 单击“宏”。
  • 单击“录制宏”。将出现“录制宏”对话框。
  • 为宏输入名称“Auto_Run”。
  • 键入描述并单击“确定”。
Auto_open
  • 开始录制宏。
  • 停止录制。
  • 将工作簿另存为启用宏的工作簿。
  • 关闭工作簿。
  • 打开工作簿。Auto_Run宏将自动运行。

如果您希望Excel启动时不运行Auto_Open宏,请在启动Excel时按住SHIFT键。

Auto_Open宏的限制

以下是Auto_Open宏的限制:

  • 如果您保存Auto_Open宏的工作簿包含工作簿打开事件的代码,则打开事件的代码将覆盖Auto_Open宏中的操作。

  • 当使用Open方法运行代码打开工作簿时,将忽略Auto_Open宏。

  • Auto_Open宏在任何其他工作簿打开之前运行。因此,如果您记录希望Excel在默认Book1工作簿或从XLStart文件夹加载的工作簿上执行的操作,则在重新启动Excel时,Auto_Open宏将失败,因为宏在默认工作簿和启动工作簿打开之前运行。

如果您遇到任何这些限制,则不必录制Auto_Open宏,而应编写下一节中描述的打开事件代码。

工作簿打开事件的VBA代码

您可以编写在打开工作簿时将执行的代码。VBA提供了一个名为open的事件,其中包含一个VBA过程,用于在打开工作簿时执行的操作。

打开您为绝对引用存储宏的工作簿 – Report_ProjectXYZ。运行此宏后,将在工作簿中添加一个新工作表,并且项目报告结构将显示在新工作表上。

您可以编写一个宏代码,在打开工作簿时执行这些操作。这意味着当您打开项目报告工作簿时,一个包含报告结构的新工作表将准备好供您输入详细信息。

请在VBA编辑器中按照以下步骤操作:

  • 双击“项目资源管理器”中的“ThisWorkbook”。

  • 在代码窗口中,从左侧下拉列表中选择“工作簿”,从右侧下拉列表中选择“打开”。将显示Sub Workbook_Open ()。

Workbook_open
  • 单击“项目资源管理器”中的“模块”。

  • 双击包含宏代码的模块名称。

  • 从模块中复制宏代码,并将其粘贴到Sub WorkBook_Open ()中。

Sub Workbook_open

保存启用宏的工作簿。再次打开它。宏运行,并插入一个包含报表结构的新工作表。

广告