Excel Macros 简明教程

Excel Macros - Quick Guide

Excel Macros - Overview

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

宏可帮助您节省经常需要完成的数据操作和数据报告中的重复任务的时间。

Macro and VBA

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

VBA 全称为 Visual Basic for Applications,它是一种简单的编程语言,可通过 Excel Visual Basic 编辑器 (VBE) 使用,后者可通过功能区上的开发工具选项卡获得。当您记录宏时,Excel 将生成 VBA 代码。如果您只想记录宏并运行宏,则无需学习 Excel VBA。但如果您想修改宏,则只能通过修改 Excel VBA 编辑器中的 VBA 代码来执行该操作。

您将学习如何在“创建简单宏”一章中使用 Excel 命令记录简单宏并运行该宏。您将在后面的章节中进一步了解宏以及如何通过 Excel VBA 编辑器创建和/或修改宏。

Personal Macro Workbook

宏可以保存到记录它的工作簿中。在这种情况下,您只能通过该工作簿运行宏,因此您应该保持该工作簿处于打开状态。Excel 为您提供另一种方式来存储您的所有宏。它是一个个人宏工作簿,您可以在其中保存宏,这使您能够从任何工作簿中运行这些宏。

在“将所有宏保存在单个工作簿”这一章节中,您将了解个人宏工作簿。

Macro Security

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

您将在“宏安全”这一章节中了解到更多关于此内容的信息。

Absolute References and Relative References

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

您将在“对宏使用绝对引用”和“对宏使用相对引用”这一章节中了解到这些内容。

Macro Code in VBA

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

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

您可以在 Excel VBA 编辑器中了解如何查看宏代码,并且可以在“了解宏代码”这一章节中了解宏代码。

Assigning Macros to Objects

您可以将宏分配给某个对象,例如形状、图形或控件。然后,您可以通过单击该对象来运行宏。您将在“将宏分配给对象”这一章节中了解到此内容。

Running Macros

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

Creating a Macro Using VBA Editor

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

Editing a Macro

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

您可以重命名宏,甚至可以将其删除。您还将在同一章节中了解到此内容。

User Forms

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

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

Debugging Macro Code

有时,宏可能无法按预期运行。您可能已经创建了宏,或者您可能正在使用某人提供给您的宏。您可以像调试任何其他代码一样调试宏代码,以发现缺陷并对其进行更正。您将在“调试宏代码”这一章节中了解到此内容。

Configuring a Macro to Run on Opening a Workbook

当您打开工作簿时,您可以让您的宏自动运行。您可以通过创建 Auto_Run 宏或为工作簿打开事件编写 VBA 代码来执行此操作。您将在“配置宏在打开工作簿时运行”这一章节中学习此内容。

Excel Macros - Creation

您可以通过录制击键和鼠标点击、给宏命名并指定宏的存储方式来创建带有 Excel 命令的宏。因此,记录这样一个宏可以用 Excel 命令运行。

假设您必须以以下格式反复收集某些结果 -

format

您可以使用宏来处理它,而不必每次都创建表格。

Recording a Macro

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

  1. 单击功能区的“视图”选项卡。

  2. 单击宏组中的宏。

  3. 从下拉列表中选择“录制宏”。

record

[ Record Macro 对话框出现。

  1. 在宏名称框中键入 MyFirstMacro

  2. 在说明框中键入 A Simple Macro ,然后单击确定。

record macro

记住您执行的所有击键和鼠标点击现在都将被记录下来。

  1. 单击单元格 B2。

  2. Create the table.

  3. 单击工作表中的其他单元格。

  4. 单击功能区的“视图”选项卡。

  5. Click Macros.

  6. 从下拉列表中选择 Stop Recording

stop recording

宏录制完成。

单击特定单元格的第一步非常重要,因为它会告诉宏从哪里开始放置记录的步骤。完成录制后,您必须单击“停止录制”以避免记录不必要的步骤。

Running a Macro

您可以随时运行已录制的宏。要运行宏,请执行以下操作 -

  1. 单击新建工作表。

注意活动单元格。在我们的示例中,它是 A1。

  1. 点击功能区的 VIEW 选项卡。

  2. Click Macros.

  3. 从下拉列表中选择 View Macros

view

出现宏对话框。

macro dialog box

仅会将你录制的宏显示在“宏”列表中。

  1. 单击“宏”对话框中宏名称 - MyFirstMacro。将显示你在录制宏时键入的说明。宏说明可以让你确定录制宏的目的。

  2. 单击“运行”按钮。你将在录制宏时创建的相同的表格将在不到一秒钟的时间内出现。

macros list

你已了解 Excel 为你提供的法宝,可以节省大量时间来处理重复的任务。你将看到以下内容 −

  1. 尽管运行宏之前的活动单元格是 A1,但表格却放置在你录制的单元格 B2。

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

你在运行宏之前可以在不同的活动单元格的多个工作表中运行宏,并观察与上面给出的相同的条件。只要记下这一点,你稍后将在本教程中了解到它是为什么这样发生的。

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

Storing a Macro

你可能想知道如何保存创建的宏。在此上下文中,你需要了解以下内容 −

  1. Storing a macro

  2. 保存启用宏的文件

当你创建宏时,可以选择存储该特定宏的位置。你可以在 Record Macro 对话框中执行此操作。

单击框 - Store macro in 。提供以下三个选项 −

  1. This Workbook.

  2. New Workbook.

  3. Personal Macro Workbook

store macro

This Workbook

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

New Workbook

尽管此选项可用,但不建议使用。你将要求 Excel 将宏存储在另一个新工作簿中,并且通常没有必要。

Personal Macro Workbook

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

Saving a Macro Enabled File

如果你已选择 This Workbook 作为存储宏的选项,则需要连同宏一起保存工作簿。

尝试保存工作簿。默认情况下,您需要 Excel 将工作簿另存为 .xls 文件。Excel 会显示一条消息,表示一个 Excel 功能 VB 项目无法保存为无宏工作簿,如下所示。

this workbook

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

  1. 在警告消息框中,点击否。

  2. 在另存为类型中,选择 Excel 宏启用工作簿 (*.xlsm)。

  3. Click Save.

save file

您将在后面章节中的本教程中了解到更多这些内容。

Excel Macros - Macros in a Single Workbook

Excel 为你提供了一种工具,可以将所有宏存储在同一工作簿中。该工作簿称为个人宏工作簿 - Personal.xlsb。它是一个隐藏的工作簿,存储在你的计算机上,每当你打开 Excel 时都会打开它。这样能够让你从任何工作簿中运行宏。每台计算机将有一个个人宏工作簿,你无法在计算机之间共享它。你可以从计算机上的任何工作簿中查看和运行个人宏工作簿中的宏。

Saving Macros in Personal Macro Workbook

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

从类别 Store macro in 下面的下拉列表中选择“个人宏工作簿”。

personal macro
  1. Record your second macro.

  2. 如下所示,在“录制宏”对话框中输入宏详细信息。

  3. Click OK.

second macro

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

recording starts
  1. Stop recording.

  2. 单击功能区的“视图”选项卡。

  3. Click Macros.

  4. 从下拉列表中选择 View Macros 。将出现宏对话框。

view macros

宏名称会显示一个 PERSONAL.XLSB! 前缀,表明宏在个人宏工作簿中。

保存您的工作簿。因为它没有保存在您的工作簿中,它将被保存为 .xls 文件,然后关闭 Excel。

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

save

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

Hiding / Unhiding Personal Macro Workbook

个人宏工作簿将默认隐藏。当您启动 Excel 时,个人宏工作簿会被加载,但您看不到它,因为它被隐藏了。您可以按以下步骤解除隐藏 −

  1. 点击功能区的 VIEW 选项卡。

  2. 单击“窗口”组中的“解除隐藏”。

view tab

将出现“解除隐藏”对话框。

unhide

PERSONAL.XLSB 出现在“解除隐藏工作簿”框中,然后单击“确定”。

personal xlsb

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

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

  1. 单击个人宏工作簿。

  2. 单击功能区的“视图”选项卡。

  3. 单击功能区上的“隐藏”。

Running Macros Saved in Personal Macro Workbook

您可以从任何工作簿运行保存在个人宏工作簿中的宏。要运行宏,个人宏工作簿是隐藏的还是解除隐藏的并不会产生任何区别。

  1. Click View Macros.

  2. 从宏列表中选择宏名称。

  3. 单击“运行”按钮。宏将运行。

Adding / Deleting Macros in Personal Macro Workbook

通过在录制宏时将其选为“存储宏于”选项,您可以向个人宏工作簿中添加更多宏,正如您之前看到的。

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

  1. 确保个人宏工作簿处于取消隐藏状态。

  2. 单击“查看宏”对话框中的宏名称。

  3. Click the Delete button.

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

hidden workbook

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

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

Excel Macros - Security

您在 Excel 中创建的宏将以编程语言 VBA(应用程序的可视化 Basic)编写。您将在后面的章节中了解 Excel 宏代码。如您所知,在存在可执行代码时,就会有病毒的威胁。宏也容易受到病毒的攻击。

What are Macro Viruses?

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

Microsoft 引入了宏安全性,以便您可以识别您信任的宏和您不能信任的宏。

Macro Enabled Excel Workbooks

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

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

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

Ways of Trusting Macro Enabled Workbook

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

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

  2. 检查宏是否已进行数字签名

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

Placing the macro enabled workbooks in a trusted folder

这是管理宏安全最简单、最有效的方法。Excel 允许您将文件夹指定为受信任位置。将所有已启用宏的工作簿放在该受信任文件夹中。您可以在不受警告或限制的情况下打开已保存到该位置的已启用宏的工作簿。

Checking if a macro is digitally signed

数字签名可确认作者的身份。您可以将 Excel 配置为在无警告或限制的情况下,运行来自受信任人员的经过数字签名的宏。如果自作者签名后工作簿已更改,Excel 也会向收件人发出警告。

Enabling security alert messages before opening macro enabled workbooks

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

security

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

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

但是,您可以在以下章节了解宏安全设置,并检查它们是否需要更改。您必须运用自己的直觉,根据上下文和您对文件来源的了解来决定这些选项。

Macro Security Settings in Trust Center

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

  1. 单击功能区上的“文件”选项卡。

  2. 单击“选项”。这将显示“Excel 选项”对话框。

  3. 单击左窗格中的“{s1}”。

  4. 单击“Microsoft Excel 信任中心”下的“{s2}”按钮。

macro setting

这将显示“{s3}”对话框。

trust center

您将在左窗格中看到“Excel 信任中心”中提供的各种选项。您将在以下章节中了解与 Excel 宏相关的选项。

Macro Settings

宏设置位于“信任中心”。

macro settings

在“宏设置”下,提供了四个选项。

  1. {s4} - 如果选择此选项,将禁用宏和有关宏的安全警报。

  2. {s5} - 宏被禁用,但如果存在宏,会出现安全警报。您可以逐个启用宏。

  3. {s6} - 宏被禁用,但如果存在宏,会出现安全警报。但是,如果宏是由受信任的发布者通过数字签名进行签名的,则如果您信任该发布者,此宏将运行。如果您不信任该发布者,您将收到通知,以启用已签名的宏并信任该发布者。

  4. {s7} - 如果选择此选项,所有宏都将运行。此设置使您的计算机容易受到潜在恶意代码的攻击。

您可以在“开发人员宏设置”下拥有一个带有复选框的附加安全选项。

  1. Trust access to the VBA project object model. 此选项允许从自动化客户端按编程方式访问 Visual Basic for Applications (VBA) 对象模型。此安全选项适用于编写用于自动化 Office 程序和操作 VBA 环境和对象模型的代码。它是一项按用户和按应用设置,默认情况下拒绝访问,防止未经授权的程序构建有害的自复制代码。要让自动化客户端访问 VBA 对象模型,运行代码的用户必须授予访问权限。若要打开访问权限,选择复选框。

Defining a Trusted Location

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

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

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

trusted location

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

你还可以找到 Office 不推荐的选项,例如 Internet 上的位置。

Digitally Signed Macros from Reliable Sources

Microsoft 提供了一个用于适应经过数字签名的宏的选项。但是,即使宏经过数字签名,你也需要确保它来自受信任的发布者。

你可以在信任中心找到受信任的发布者。

  1. 单击“信任中心”对话框中的 Trusted Publishers 。右则会显示证书列表,其中包含“已颁发给”、“已颁发由”和“到期日期”的详细信息。

  2. 选择证书,然后单击“查看”。

trusted publishers

将显示证书信息。

正如你在本章前面学到的,你可以设置一个仅在你信任发布者时才运行经过数字签名的宏的选项。如果你不信任发布者,系统会通知你启用已签名的宏并信任发布者。

Using Warning Messages

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

warning messages

如果你知道宏或这些宏来自可靠来源,你可以在消息栏上单击“启用内容”按钮以启用宏。

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

Enabling / Disabling Security Alerts on the Message Bar

你可以按照以下方式启用/禁用带有消息栏的安全警告:

  1. 单击功能区上的“文件”选项卡。

  2. 单击“选项”。这将显示“Excel 选项”对话框。

  3. Click Trust Center.

  4. 单击“信任中心设置”按钮。

  5. Click Message Bar.

会出现所有 Office 应用程序的消息栏设置。

message bar
  • Showing the Message Bar 下面有两个选项。

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

  1. 这是默认选项。当可能不安全的内容被禁用时,消息栏会出现。

  2. 如果您已选择 - Disable all macros without notification in the Macro Settings of the Trust Center ,这个选项将未被选择,消息栏不会出现。

showing message

Option 2 − 永不显示有关被阻止内容的信息。

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

blocked

Excel Macros - Absolute References

Excel 宏可以使用绝对引用或相对引用两种方式记录。使用绝对引用记录的宏将记录的步骤精确地放到其记录的单元格中,而不考虑活动单元格。另一方面,使用相对引用记录的宏可以在工作表的不同部分执行记录的任务。

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

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

absolute reference

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

填好的报告样例将如下所示 −

sample

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

  1. C3 – 日期报告。

  2. C13 – 今天完成的任务数。

  3. C14 – 已完成任务总数。

  4. C15 – 完成工作百分比。

在这些单元格中,您还可以在 C3(日期报告)中放置 Excel 函数 = TODAY () ,这样可以在不需要您干预的情况下放置报告日期。此外,在单元格 C15 中,您可以输入公式 C14/C12,并将单元格 C15 的格式设置为百分比,让 Excel 为您计算完成工作百分比。

这样,只需要 C13 和 C14 这两个单元格由您每天填入。因此,每次必须创建报告时,理想情况下其余单元格都应该填好信息。这将为您节省时间,您只需几分钟就能完成例行的报告活动。

现在,假设您必须为三个项目发送此类报告。您可以想象这样可以为您节省多少时间,让您投入更具挑战性的一天工作,当然也可以从管理部门获得赞誉。

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

Ensuring Absolute References

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

  1. Start recording the macro.

  2. Create a new worksheet.

  3. 在新工作表中单击 B2 之外的任何单元格。

  4. 单击单元格 B2。

  5. Continue recording the macro.

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

Note − 以上给出的前三个步骤至关重要。

  1. 如果不创建一个新工作表,在运行宏时,你记录的所有内容都会放到同一工作表中的同一位置。这不是你想要的结果。你需要让每份报告都位于不同的工作表中。

  2. 如果没有在录制的开始部分点击其他单元格,即使活动单元格是 B2,Excel 也会将记录的步骤放入活动单元格。当运行宏时,它会根据活动单元格将记录的报告格式放入工作表的任意部分。通过明确点击 B2 以外的其他单元格,再点击 B2,你是在告诉记录器始终将宏步骤放入 B2 单元格中。

Recording a Macro

你可以使用功能区中的“视图”选项卡下的 Record Macro 命令开始录制宏→宏。你还可以单击 Excel 任务栏左侧的 Start Recording Macro 按钮。

recording macro
  1. 开始录制宏。会出现 Record Macro 对话框。

  2. 提供一个有意义的名称,将宏识别为某个特定项目的报告。

  3. Store macro in 下选择此工作簿,因为你只会使用此特定工作簿生成报告。

  4. 描述你的宏,然后单击“确定”。

description

你的宏开始录制。

  1. 创建一个新工作表。这将确保你的新报告位于新工作表中。

  2. 在新工作表中单击 B2 之外的任何单元格。

  3. 点击单元格 B2。这将确保宏始终将你记录的步骤放入 B2 中。

  4. 创建报告的格式。

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

  6. 在 C3 中输入 = TODAY (),在 C15 单元格中输入 = C14/C12。

  7. 设置带有日期的单元格。

停止录制宏。

stop record

你可以使用“视图”选项卡下的功能区中的 Stop Recording 命令或者单击 Excel 任务栏左侧的“停止录制宏”按钮来停止录制宏→宏。

taskbar

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

Running a Macro

你只需运行宏,就可以在几秒钟内生成任意数量的报告。

  1. 点击功能区上的“视图”按钮。

  2. Click Macros.

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

  4. Click the macro Report_ProjectXYZ.

  5. Click the Run button.

工作簿中将创建一个新工作表,其中 B2 单元格内创建了报表模板。

Excel Macros - Relative References

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

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

  1. Constituency name.

  2. 选区的总人口。

  3. 选区的选民人数。

  4. 选民人数,

  5. Number of female voters.

数据按照如下所示提供给您,在工作表中。

relative references

无法按照上述格式分析数据。因此,按照下列方式在表格中排列数据。

table

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

  1. 从 280 个选区排列数据需要花费大量时间

  2. 可能容易出错

  3. 这成为一项单调乏味的任务,无法让您专注于技术问题

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

Using Relative References

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

  1. 点击功能区的 VIEW 选项卡。

  2. Click Macros.

  3. Click Use Relative References.

relative reference

Preparing the Data Format

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

创建如下所示的标题行。

preparing

Recording a Macro

录制宏如下所示 −

  1. Click Record Macro.

  2. 给宏一个有意义的名称,例如 DataArrange。

  3. 在单元格 B4 中键入 = row ()- 3 。这是因为序列号是当前行号 - 其上方的 3 行。

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

  5. 现在点击单元格 B5。您的表格如下所示。

macro recording

第一个数据集被安排在表格的第一行中。删除行 B6 - B11,然后点击单元格 B5。

first data set

您会看到活动单元格是 B5,下一个数据集将被放置在这里。

停止录制宏。用于安排数据的宏已准备就绪。

Running a Macro

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

活动单元格是 B5。运行宏。第二个数据集将被安排在表格的第二行,活动单元格将成为 B6。

macro running

再次运行宏。第三个数据集将被安排在表格的第三行,活动单元格将成为 B7。

run the macro

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

运行宏,直到所有 280 个数据集被排列成表格中的 280 行。此过程只需要几秒钟,并且由于步骤是自动化的,所以整个练习没有错误。

Excel Macros - VBA

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

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

Developer Tab on the Ribbon

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

developer

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

  1. 右键单击功能区。

  2. 从下拉列表中选择“自定义快速访问工具栏”。

customize ribbon

“自定义快速访问工具栏”对话框出现。

  1. 从“自选命令”下拉列表中选择“常用命令”。

  2. 在“主要选项卡”列表中勾选“开发工具”框,然后单击“确定”。开发工具选项卡出现。

excel options

Developer Commands for Macros

您需要了解开发工具选项卡下针对宏的命令。

单击功能区上的“开发工具”选项卡。以下命令在“代码”组中可用 −

  1. Visual Basic

  2. Macros

  3. Record Macro

  4. Use Relative References

  5. Macro Security

controls

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

您已经在之前章节中学习过 Visual Basic 编辑器以外的命令。

VBA Editor

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

打开工作簿 – MyFirstMacro.xlsm,您在本章中已将其保存 – 在本教程中创建简单宏。

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

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

vba editor

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

view macro

VBE 在新窗口中出现。

vbe

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

您将在 VBE 中找到以下内容 −

  1. Projects Explorer.

  2. Properties.

  3. Module window with Code.

Projects Explorer

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

Properties Window

属性是 VBA 对象的参数。当您具有一个对象,如命令按钮时,其属性将出现在“属性”窗口中。

Module Window with Code

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

Excel Macros - Understanding Codes

当你记录宏时,Excel 会将其保存为 VBA 代码。你可以在 VBA 编辑器中查看此代码。如果你对 Excel VBA 有丰富的了解,则可以理解此代码并对其进行修改。你可以参考本教程库中的 Excel VBA 教程来掌握此语言。

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

Viewing a Macro Code in VBA Editor

若要查看宏代码,请执行下列步骤:

  1. 打开存储宏的工作簿。

  2. 单击功能区的“视图”选项卡。

  3. Click Macros.

  4. 从下拉列表中选择查看宏。

viewing

出现宏对话框。

  1. 在宏列表中单击“MyFirstMacro”。

  2. Click the Edit button.

edit

VBA 编辑器将打开,而宏“MyFirstMacro”的代码将出现。

macro

Understanding the Recorded Actions as Parts of Code

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

  1. Start reading the code.

  2. 将代码映射到记录步骤。

understanding

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

enlarge code

请注意,代码很简单。如果你学习了 Excel VBA,则可以通过在 VBA 编辑器中编写代码来创建宏。

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

Excel Macros - Assigning Macros to Objects

假设您已经创建了一个需要多次执行的宏。举例来说,已为绝对引用和相对引用创建宏。然后,如果您能单击鼠标运行宏,这会让您更轻松。可以通过将宏分配给对象(例如形状、图形或控件)来实现这一点。

在本节中,您将学习如何将对象包含在工作簿中,并给它赋予一个宏。

回想起您使用相对引用创建的宏。该宏将一列中的数据整理成一个表,以便于数据分析。

recall

Assigning a Macro to a Shape

您可以在工作表中插入一个有意义的形状,带有不言自明的文本,当单击该形状时运行分配给它的宏。

  1. 单击功能区上的“ INSERT ”选项卡。

  2. 单击插图组中的“ Shapes ”。

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

assigning

绘制形状并设置其格式。

draw shape
  1. 右键单击该形状,然后从下拉列表中选择“ Edit Text ”。

  2. 在形状中键入文本——运行宏。

  3. Format the text.

edit text
  1. 右键单击该形状。

  2. 从下拉列表中选择“分配宏”。

assign macro

将宏分配对话框显示。单击宏名,即 RelativeMacro,然后单击确定。

macro name

宏被分配给形状。

  1. 单击要运行宏的单元格,例如 B4。

  2. 将光标(指针)移动到形状上。光标(指针)将更改为手指。

cursor

现在单击形状。宏将运行。重复单击鼠标即可多次运行宏,则可以在几秒钟内完成将数据整理成表格的任务。

Assigning a Macro to a Graphic

您可以在工作表中插入图形并为其分配宏。可以将图形选为宏的可视化效果。例如,您可让一张表格图形表示该宏会将数据整理成表格。

  1. 单击功能区上的插入选项卡。

  2. 单击 插图 组中的图片。

  3. 选择包含图形的文件。

graphic

其余步骤与前一节中所述形状的步骤相同。

Assigning a Macro to a Control

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

  1. 单击功能区上的 DEVELOPER 工具卡。

  2. 单击 控件 组中的 Insert

insert

如下图所示,从下拉列表中选择 Form Controls 下的 按钮 图标。

form controls
  1. 单击要插入按钮控件的工作表中的单元格。将宏分配对话框显示。

  2. 单击宏名称并单击确定。

button control

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

control button
  1. 右单击按钮。

  2. Click Edit Text.

  3. Type – Run Macro.

  4. 设置文本格式并调整按钮大小。

type run macro

单击按钮多次可多次运行宏。

使用窗体控件是一种与用户交互的简单有效的途径。您将在这一章学习更多关于此内容 – 与用户交互。

Excel Macros - Running a Macro

可以在工作簿中执行宏的几种方法。宏可能会保存在启用了宏的工作簿中,或者保存在您的个人宏工作簿中,您可以在任何工作簿中访问它,如您之前了解的那样。

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

  1. 从视图选项卡运行宏

  2. 通过按 Ctrl 加快捷键运行宏

  3. 通过单击快速访问工具栏上的按钮运行宏

  4. 通过单击功能区上的自定义组中的按钮运行宏

  5. 通过单击图形对象运行宏

  6. 从开发人员选项卡运行宏

  7. 从 VBA 编辑器运行宏

Running a Macro from View Tab

您已经了解了从功能区上的视图选项卡运行宏。快速回顾 −

  1. 单击功能区的“视图”选项卡。

  2. Click Macros.

  3. 从下拉列表中选择查看宏。

active cell

出现宏对话框。

  1. Click the macro name.

  2. Click the Run button.

dialog box

Running a Macro with Shortcut Key

您可以为宏分配快捷键(Ctrl + 键)。您可以在 Create Macro 对话框中录制宏时执行此操作。否则,您可以在 Macro Options 对话框中稍后添加此操作。

Adding a Shortcut Key While Recording a Macro

  1. Click the VIEW tab.

  2. Click Macros.

  3. 从下拉列表中选择“录制宏”。

“创建宏”对话框出现。

  1. Type a macro name

  2. 在“快捷键”下的 Ctrl + 旁边的方框中键入一个字母,比如 q。

adding

Adding a Shortcut Key in Macro Options

  1. Click the VIEW tab.

  2. Click Macros.

  3. 从下拉列表中选择查看宏。

出现宏对话框。

  1. Select the macro name.

  2. Click the Options button.

shortcut key

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

type a letter

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

Note − 可以使用任何小写或大写字母作为宏的快捷键。如果使用作为 Excel 快捷键的任意 Ctrl + 字母组合,将覆盖它。例如包括 Ctrl+C、Ctrl+V、Ctrl+X 等。因此,在选择字母时请自行斟酌。

Running a Macro through Quick Access Toolbar

可以向快速访问工具栏添加宏按钮,并通过单击它来运行宏。当你将宏存储在个人宏工作簿中时,此选项会非常有用。添加的按钮将显示在你打开的任何工作簿中的快速访问工具栏中,从而使你能够轻松运行宏。

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

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

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

  2. 从下拉列表中选择 Customize Quick Access Toolbar

quick access

将出现“Excel 选项”对话框。在类别 Choose commands from 下方的下拉列表中选择“宏”。

commands

“宏”下方将显示宏列表。

  1. Click PERSONAL.XLSB!MyMacro.

  2. Click the Add button.

list

宏名称显示在右侧,带有一个宏按钮图像。

要更改宏按钮图像,请执行以下操作:

  1. 在右侧框中单击宏名称。

  2. Click the Modify button.

modify

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

icon

将指针放在快速访问工具栏上的按钮图像时显示的“显示名称”修改为一个有意义的名称,例如本示例中的“运行 MyMacro”。单击“确定”。

mymacro

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

symbol

宏按钮显示在快速访问工具栏上,宏显示名称将显示在你将指针放在按钮上时。

pointer

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

Running a Macro in Custom Group

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

  1. 右键单击功能区。

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

custom group

“自定义快速访问工具栏”对话框出现。

  1. 在“自定义功能区”下选择“主选项卡”。

  2. Click New Tab.

excel option

新选项卡(自定义)显示在“主选项卡”列表中。

  1. Click New Tab (Custom).

  2. 单击“新建组”按钮。

新组(自定义)显示在“新选项卡(自定义)”下方。

  1. Click New Tab (Custom).

  2. Click the Rename button.

custom

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

rename

Note − 功能区上的所有“主选项卡”均为大写字母。你可以自行选择使用大写字母还是小写字母。我选择了首字母大写的形式,以便在标准选项卡中显示出来。

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

  1. Click New Group (Custom).

  2. Click the Rename button.

new group

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

display name

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

单击 Choose commands from 下的左窗格中的“宏”。

commands from
  1. 从宏列表中选择你的宏名称,比如 - MyFirstMacro。

  2. Click the Add button.

macro list

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

personal macros
  1. 在列表中单击“我的宏(自定义)”。

  2. 单击箭头以向上或向下移动选项卡。

arrows

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

position

你的自定义选项卡 - 我的宏出现在功能区上。

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

click tab

Running a Macro by Clicking an Object

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

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

Running a Macro from the Developer Tab

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

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

  2. Click Macros.

developer tab

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

click run

Running a Macro from VBA Editor

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

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

  2. 从下拉列表中选择“运行 Sub/用户窗体”。

userform

Creating a Macro Using VBA Editor

可以通过在 VBA 编辑器中编写代码来创建宏。在本章中,你将了解在哪里以及如何编写用于宏的代码。

VBA Objects and Modules

在你开始为宏编码之前,请理解 VBA 对象和模块。

  1. 用你的第一个宏打开启用宏的工作簿。

  2. 在功能区上单击“开发工具”选项卡。

  3. 在“代码”组中,单击“Visual Basic”。

objects

VBA 编辑器窗口就会打开。

window opens

你将看到“工程资源管理器”窗口中包含如下内容:

  1. 启用了宏的工作簿 – MyFirstMacro.xlsm 显示为一个 VBA 项目。

  2. 所有工作表及工作簿显示为位于该项目下的 Microsoft Excel 对象。

  3. Module1 显示在“模块”下。你的宏代码位于此处。

  4. Click Module1.

  5. 在功能区上,单击“视图”选项卡。

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

code

就会出现你的宏的代码。

code of macro

Creating a Macro by Coding

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

你可以通过两个步骤完成此操作:

  1. Insert a command button.

  2. 编写声明在你单击命令按钮时进行的操作的代码。

Inserting a Command Button

  1. Create a new worksheet.

  2. 单击新的工作表。

  3. 在功能区上,单击“开发工具”按钮。

  4. 在“控件”组中,单击“插入”。

  5. Form Controls 中选择按钮图标。

inserting command
  1. 单击想要放置命令按钮的工作表。

  2. “分配宏”对话框将出现。

button1 click

Visual Basic 编辑器将出现。

visual basic

您将观察到以下内容 −

  1. 一个新模块 - Module2 将插入到项目资源管理器中。

  2. 将出现带有标题 Module2(代码)的代码窗口。

  3. 一个子过程 Button1_Click() 将插入到 Module2 代码中。

Coding the Macro

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

例如,在子过程 Button1_Click() 中输入 MsgBox “Best Wishes to You!” 。当单击命令按钮时,将显示一个具有给定字符串的消息框。

message box

就是这么简单!您的宏代码已准备就绪。正如您所知,VBA 代码不需要编译,因为它使用解释器运行。

Running the Macro from VBA Editor

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

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

  2. 从下拉列表中选择运行子程序/用户窗体。输入的字符串消息框将出现在您的工作表中。

macro from vba

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

Running the Macro from Worksheet

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

  1. 单击工作表的某个位置。

  2. 单击按钮。消息框会出现在工作表上。

macro from worksheet

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

Excel Macros - Editing

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

如果您精通 Excel VBA,为宏编写代码或修改代码是一项简单任务。您可以根据需要编辑宏代码。如果您只想在宏代码中进行少数简单更改,您甚至可以将宏代码从一个地方复制到另一个。

Copying a Macro Code

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

  1. Open the workbook MyFirstMacro.xlsm.

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

  3. 点击 Visual Basic。Visual Basic 编辑器将会打开。

  4. 打开模块 1(MyFirstMacro 宏代码)和模块 2(Button1_Click () 宏代码)的代码。

  5. 点击功能区上的窗口选项卡。

  6. 从下拉列表中选择水平平铺。

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

copying
  1. 复制模块 2 代码中的 MsgBox 行。

  2. 将其粘贴在该行的上方。

  3. 修改字符串为 - MsgBox “Hello World!”

  4. 从模块 1 复制以下代码。

copy code

将它粘贴到模块 2 代码中两行 MsgBox 代码行之间。

msgbox
  1. 点击保存图标保存代码。

  2. 在 Excel 表格中点击按钮。会弹出一个包含“你好,世界!”信息的对话框。点击确定。

hello world

将会出现表格数据(根据您复制的代码),并会弹出一个包含信息“祝你好运”的对话框。

table data

您可以仅通过几个步骤修改代码。对于初学者而言,这是最简单的任务。

Renaming a Macro

假设您想从包含命令按钮的工作表之外的任何工作表中运行已编辑的宏。您可以通过重命名宏,而不管是否点击按钮,来完成操作。

  1. 单击功能区的“视图”选项卡。

  2. Click Macros.

  3. 从下拉列表中选择查看宏。

出现宏对话框。

  1. 点击宏名称 – Button1_Click。

  2. Click the Edit button.

renaming macro

宏代码将出现在 VBA 编辑器中。

将 Sub 行中出现的名称从 Button1_Click 更改为 RenamedMacro。保持 Sub 和括号不变。

renamedmacro

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

open macro
  1. Click RenamedMacro.

  2. 点击运行按钮。该宏会运行。现在,无需点击按钮。

Deleting a Macro

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

  1. 打开宏对话框。

  2. Click the macro name.

  3. Click the Delete button.

deleting macro

会显示 Delete 确认信息。

delete confirmation

如果您确定要删除宏,请点击 Yes 。否则,请点击否。

Excel Macros - UserForms

有时,您可能需要反复收集他人的信息。Excel VBA 为您提供了一种处理此任务的简单方法 - UserForm 。与您填写的任何其他表单一样,用户窗体让您可以轻松了解要提供哪些信息。用户窗体非常友好,因为它提供的控件不言自明,必要时还附有其他说明。

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

Creating a UserForm

要创建用户窗体,请按照以下步骤进行 −

  1. 在功能区上单击“开发工具”选项卡。

  2. 单击 Visual Basic。将为工作簿打开一个 Visual Basic 窗口。

  3. Click Insert,

  4. 从下拉列表中选择 UserForm。

creating userform

用户窗体出现在窗口右侧。

userform appears

Understanding the UserForm

最大化 UserForm.xlsx – UserForm1 窗口。

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

understanding userform
  1. 在属性窗口中将用户窗体的标题更改为 Project Report – Daily。

  2. 将用户窗体的名称更改为 ProjectReport。

projectreport

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

Controls in the ToolBox

用户窗体将具有不同的组件。当您单击任何组件时,系统会指示您提供什么信息以及如何提供信息,或者您会看到可供选择的选项。所有这些都是通过用户窗体的工具箱中的 ActiveX 控件提供的。

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

Form controls

窗体控件是与较早版本的 Excel(从 Excel 5.0 版本开始)兼容的 Excel 原始控件。窗体控件还设计为在 XLM 宏表上使用。

您可以使用窗体控件运行宏。您可以向控件分配现有宏,或编写或记录新宏。单击控件时,宏将运行。您已了解如何从窗体控件中插入命令按钮到工作表中来运行宏。然而,这些控件无法添加到用户窗体中。

ActiveX controls

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

您在用户窗体工具箱中拥有以下 ActiveX 控件 −

  1. Pointer

  2. Label

  3. TextBox

  4. ComboBox

  5. ListBox

  6. CheckBox

  7. OptionButton

  8. Frame

  9. ToggleButton

  10. CommandButton

  11. TabStrip

  12. MultiPage

  13. ScrollBar

  14. SpinButton

  15. Image

除了这些控件外,Visual Basic 还为您提供了 MsgBox 函数,该函数可用于显示消息和/或提示用户采取操作。

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

Label

您可以通过显示描述性文本(例如标题、说明和/或简要说明)来使用标签进行标识目的。

Example

label

TextBox

您可以使用文本框(一个矩形框)来键入、查看或编辑文本。您还可以将文本框用作呈现只读信息的静态文本字段。

Example

textbox

List Box

可以使用列表框来显示一个或多个用户可以选择文本项目列表。使用列表框显示数量或内容不同的众多选择。

  1. 在 UserForm 中插入一个 ListBox。

  2. Click on the ListBox.

  3. 在 ListBox 的属性窗口中,输入 ProjectCodes 以获得名称。

列表框有三种类型 −

  1. Single-selection List box − 单选列表框只允许一种选择。在这种情况下,列表框类似于一组单选按钮,只不过列表框可以更有效地处理大量项目。

  2. Multiple selection List Box − 多选列表框允许一种选择或连续(相邻)选择。

  3. Extended-selection List Box − 扩展选择列表框允许一种选择、连续选择和非连续(或独立)选择。

可以在属性窗口中选择这些列表框类型之一。

listbox
  1. 右键单击 UserForm。

  2. 从下拉列表中选择“查看代码”。UserForm 的代码窗口会打开。

  3. 单击代码窗口右上角框中的“初始化”。

  4. 在 Private Sub UserForm_Initialize() 下键入下列代码。

ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
initialize
  1. 单击功能区上的“运行”选项卡。

  2. 从下拉列表中选择“运行 Sub/用户窗体”。

select run

接下来,你可以编写在列表中选择某项后执行操作的代码。否则,你可以仅仅显示选中的文本,例如在报表中填写项目代码的情况亦是如此。

ComboBox

你可以使用 ComboBox ,它将文本框与列表框组合起来以创建下拉列表框。与列表框相比,组合框更紧凑,但要求用户单击向下箭头以显示项列表。使用组合框从列表中仅选择一项。

  1. 在 UserForm 上插入“组合框”。

  2. Click the ComboBox.

  3. 在组合框的“属性”窗口中,为“名称”键入 ProjectCodes2。

combobox
  1. 右键单击 UserForm。

  2. 从下拉列表中选择“查看代码”。

  3. UserForm 的代码窗口会打开。

按下方所示键入以下内容。

ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")
code window
  1. 单击功能区上的“运行”选项卡。

  2. 从下拉列表中选择“运行 Sub/用户窗体”。

run tab

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

click down arrow

单击所需的项目,例如 Project2016-5。选择框中将显示已选项。

required item

CheckBox

您可以使用复选框选中单击框中显示的一个或多个选项。这些选项会有标签,您可以清晰地看到已选选项。

复选框可以有两种状态 −

  1. 选择(已启用),表示为框内对勾

  2. 清除(已禁用),表示为空白框

在组合框中使用复选框选择选项可以节省空间。在此情况下,复选框还可以有第三个状态 −

  1. 混合,表示“开启”和“关闭”状态的组合,在框内显示一个黑点。这用于表示组合框中使用复选框进行的多选。

  2. 如下所示,在 UserForm 中插入复选框。

checkbox
  1. 单击功能区上的“运行”选项卡。

  2. 从下拉列表中选择“运行 Sub/用户窗体”。

  3. 单击框中已选选项。

boxes

OptionButton

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

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

  1. 选择(已启用),表示为圆圈内的圆点

  2. 清除(已禁用),表示为空白

Frame

您可以使用框架控件(也称为组框),将相关控件组合到一个可视化单元中。通常,选项按钮、复选框或密切相关的控件会被分组到一个框架控件中。

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

  1. 插入带有标题“选择”的框架。

  2. 在框架控件中插入带有标题“是”和“否”的两个选项按钮。选项“是”和“否”是互斥的。

frame
  1. 单击功能区上的“运行”选项卡。

  2. 从下拉列表中选择“运行 Sub/用户窗体”。

  3. 单击已选选项。

selected option

ToggleButton

你可以使用一个切换按钮指示一个状态,比如是或否,或一个模式,比如开或关。这个按钮在被点击时会在启用和禁用状态之间切换。

如下图所示在 UserForm 中插入一个切换按钮 −

togglebutton
  1. 单击功能区上的“运行”选项卡。

  2. 从下拉列表中选择运行子/UserForm。这个切换按钮默认处于启用状态。

default

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

toggle button

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

CommandButton

你可以使用一个命令按钮运行一个宏,当用户点击它时执行一些操作。你已经学会如何在工作表中使用一个命令按钮来运行一个宏。

命令按钮也被称为推送按钮。如下图所示在 UserForm 中插入一个命令按钮 −

commandbutton
  1. 右击命令按钮。

  2. 在 sub Commandbutton1_click 中输入以下代码。

ProjectCodes2.DropDown
commandbutton1
  1. 单击功能区上的“运行”选项卡。

  2. 从下拉列表中选择“运行 Sub/用户窗体”。

daily report

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

combo box

TabStrip

你可以在 UserForm 中插入一个类似于 Excel 标签页的标签页控件。

ScrollBar

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

通过在所需位置绘制并调整滚动条的长度,在 UserForm 中插入一个滚动条。

scrollbar
  1. 右键单击滚动条。

  2. 从下拉列表中选择查看代码。代码窗口打开。

  3. 在 sub ScrollBar1_Scroll() 下添加以下代码:

TextBox2.Text = "Scrolling Values"
scrolling value
  1. 单击功能区上的“运行”选项卡。

  2. 从下拉列表中选择“运行 Sub/用户窗体”。

scrollbar report

拖动滚动框。文本 - 滚动值将显示在文本框中,就像你指定为滚动条滚动操作一样。

text box

MsgBox ()

你可以在点击某物时使用 MsgBox() 函数显示一条消息。这可以是一条指导或一些信息、一个警告或一个错误警报。

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

msgbox function

Message Box Icon Displays

你可以使用消息框图标显示来描绘具体的消息。你有各种消息框图标,以满足你的目的 −

  1. 在 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"
  1. 单击功能区上的“运行”选项卡。

  2. 从下拉列表中选择“运行 Sub/用户窗体”。

  3. Drag the scroll box.

你将依次收到以下消息框。

message boxes

Designing UserForm

现在,你已了解可以在 UserForm 上使用不同的控件。选择控件,在需要时对它们进行分组,并按照一定的合理顺序排列在 UserForm 上。将需要的操作作为代码编写,对应于各个控件。

有关 UserForm 的示例,请参阅本教程库中的 VBA 教程。

Excel Macros - Debugging a Code

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

这需要检查代码以查找缺陷并修复它们。在软件开发中,用于这种活动的术语是调试。

VBA Debugging

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

  1. Stepping Through Code

  2. Using Breakpoints

  3. 在代码中向前或向后移动

  4. 不逐行执行代码

  5. 在逐行执行代码时查询任何内容

  6. Halting the Execution

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

Stepping Through the Code

对于调试,您首先要做的就是逐步执行代码。如果您知道哪一部分代码可能导致缺陷,则可以跳到代码的那一行。否则,您可以逐行执行代码,在代码中向前或向后移动。

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

Stepping into the code from the workbook

若要从工作簿进入代码,请执行以下操作 −

  1. 单击功能区的“视图”选项卡。

  2. Click Macros.

  3. 从下拉列表中选择查看宏。

出现宏对话框。

  1. Click the macro name.

  2. 单击逐步执行按钮。

step into

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

macro code

Stepping into the code from the VBA editor

若要从 VBA 编辑器进入代码,请执行以下操作 −

  1. 在功能区上单击“开发工具”选项卡。

  2. 单击 Visual Basic。VBA 编辑器打开。

  3. 单击包含宏代码的模块。

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

stepping
  1. 在功能区中,单击“调试”选项卡。

  2. 从下拉列表中选择“ Step into ”。

dropdown

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

active

Backing Up or Moving Forward in the Code

您可以通过选择“单步执行”或“步出”在代码中向前或向后移动。

Not Stepping Through Each Line of Code

如果您识别到需要讨论的代码的潜在部分,则可以选择“运行到光标”以避免逐行执行代码。

Using Breakpoints

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

Using Watch

在调试过程中,您可以添加一个监视器来计算一个表达式,并在变量达到特定值时停止执行。这意味着您配置一个监视器表达式,它将被监视,直到为真,然后宏将停止并让您进入断点模式。VBA 为您提供了多种监视器类型以供选择,以便实现您的目标。

Halting the Execution

在调试过程中,在任何时间点,如果您发现了问题所在,您可以停止执行以进一步破译。

如果您是一位经验丰富的开发人员,则调试术语对您来说并不陌生,并且 VBA 编辑器调试选项使您的生活变得轻松。即使没有经验,如果您学习过 VBA 并理解代码,掌握这项技能也不会花费太多时间。

Excel Macros - Configuring a Macro

您可以记录一个宏并使用 Auto_Open 名称将其保存,以便在您打开包含此宏的工作簿时运行它。

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

Recording an Auto_Open Macro

您可以按以下步骤记录一个 Auto_Run 宏:

  1. 单击功能区的“视图”选项卡。

  2. Click Macros.

  3. 单击“记录宏”。此时将显示“记录宏”对话框。

  4. 键入 Auto_Run 作为宏名称。

  5. 键入一个描述并单击“确定”。

auto open
  1. Start recording the macro.

  2. Stop Recording.

  3. 将工作簿另存为已启用宏的工作簿。

  4. Close the workbook.

  5. 打开工作簿。Auto_Run 宏将自动运行。

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

Limitations of Auto_Open Macro

以下是一些 Auto_Open 宏的限制:

  1. 如果在其中保存 Auto_Open 宏的工作簿包含用于工作簿打开事件的代码,则打开事件的代码将覆盖 Auto_Open 宏中的操作。

  2. 如果使用打开方法运行代码打开了工作簿,则将忽略 Auto_Open 宏。

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

如果您遇到其中任何限制,则必须写入一个 Open 事件代码(如下节所述),而不是记录一个 Auto_Open 宏。

VBA Code for Open Event of a Workbook

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

在其中存储专用于绝对引用(Report_ProjectXYZ)的宏的工作簿中打开工作簿。运行该宏时,将在工作簿中添加一个新的工作表,并且项目报告结构显示在新的工作表上。

您可在打开工作簿时编写宏代码来执行这些操作。这意味着当您打开“项目报告”工作簿时,带有报告结构的新工作表将准备就绪,供您输入详细信息。

按照 VBA 编辑器中给定的以下过程进行操作:

  1. 在“项目资源管理器”中双击“ThisWorkbook”。

  2. 在代码窗口中,在左侧下拉列表中选择“工作簿”,在右侧下拉列表中选择“打开”。将显示“子工作簿_打开”。

workbook open
  1. 单击“项目资源管理器”中的“模块”。

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

  3. 从模块中复制宏代码,并将其粘贴到 WorkBook_Open 中。

sub workbook open

保存已启用宏的工作簿。再次将其打开。将运行宏,并将插入带有报表结构的新工作表。