如何在excel中录制宏?

关键点

  • 录制宏意味着录制您在 Excel 中执行的操作。
  • 您必须使用宏录制器来录制宏。
  • 当您执行活动时,宏记录器会在后面生成代码。
  • 在 Excel 中,录制宏时无法暂停。
  • 宏录制器不会创建完美的代码,因此请务必在录制后清理代码。

本指南将帮助您了解录制宏的各个方面。您还将了解如何在保存代码后清理代码。

那么,让我们开始吧。

什么是宏录制器?

Excel Macro Recorder 是一个可以记录(并非全部)您在 Excel 中执行的操作并为其生成代码的工具。执行一次特定任务,它会为此生成一个宏,下一次您需要运行该代码,而不是手动执行该任务。

想象一下摄像机,它的工作原理与摄像机类似,并为您正在执行的活动生成代码。

您应该了解,有时宏录制器可能无法提供代码。但是,如果您不了解代码,这仍然是学习代码的好方法。

您可以在开发人员选项卡中找到宏录制器按钮。

宏记录器按钮

使用VBA在Excel中进行编程Excel的高级技能之一,要开始使用VBA,您需要精通录制宏。

录制宏之前进行规划

如果你想录制视频,你需要先做一些计划,比如创建脚本、有合适的灯光等。

关于宏录制器

同样,录制宏也需要一些计划。

关键是您不想在再次使用录制的宏时获取您不想运行的活动的代码。

最好的方法是写下您需要完成的步骤,然后在录制时坚持执行它们。

在这里,我们将录制一个宏,可以将以下格式应用于选定的单元格:

  • 字体颜色:红色
  • 字体大小:12
  • 字体样式: Verdena
  • 字体文本:粗体

正如我所说,规划是必不可少的,在录制这个宏之前,我们需要注意一件事,那就是在开始录制之前选择目标单元格。

正如我所说,规划是必不可少的,在录制这个宏之前,我们需要注意一件事,那就是在开始录制之前选择目标单元格。

原因是,如果我们在录制宏时选择一个单元格,它也会保存该选择。

因此,当您再次运行此宏时,它将选择该特定单元格以对其应用所有格式。但我们想要的是在单元格上应用格式,该单元格处于活动状态(已选择)。

使用宏录制器录制宏的步骤

要在 Excel 中保存宏,您可以按照以下步骤操作:

  1. 首先,选择单元格 A4(这是我们将应用格式并记录宏的单元格)。
    record-a-macro-in-excel
  2. 之后,转到“开发人员选项卡”,在按“保存”按钮之前,启用相对引用(我们将在几分钟内了解更多信息)。
    turn-on-the-relative-reference
  3. 按录音按钮。
  4. 单击它的那一刻,您将看到一个对话框,用于填写有关您要录制的宏的一些详细信息(是的,我们需要填写它)。
    dialog-box-to-fill-some-of-the-details-about-the-macro
    • 宏名称:“HighlightCell”。
    • 热键:按 Shift+H 设置键盘快捷键 Control+Shift+H。
    • 将宏存储在:选择个人宏绑定器。
    • 描述:该宏应用红色、字体大小 12、Verdana 字体样式,并使字体加粗。
  5. 最后,单击“确定”。
  6. 此时,Excel 开始保存所有内容(您可以在状态栏上看到“宏正在录制,单击以停止录制”的图标)。
    a-macro-is-currently-recording
  7. 现在应用我们决定的四种格式。
    apply-all-the-four-formattings
    • 字体颜色:红色
    • 字体大小:12
    • 字体样式: Verdena
    • 字体文本:粗体
  8. 完成此操作后,返回开发人员选项卡并单击“停止录制”,或者您也可以从状态栏中显示“单击此处停止录制”停止录制。登记”。
    stop-recording

恭喜!您已经完成了它,此时您的工作簿中已保存了一个宏,但现在下一步是理解它。

宏记录器如何生成代码

当您执行活动时,宏录制器会在后面为您生成一个代码。

要理解这一点,您首先需要查看代码。为此,请打开Visual Basic 编辑器,转到“开发人员”选项卡 ➜ Visual Basic 编辑器。

打开视觉基本编辑器

然后打开存储代码的 module1。

开放模块1

在代码窗口中,您可以看到宏录制器生成的整个代码以及您输入的所有详细信息。

正如你所看到的,宏名称、快捷键和描述都在代码之前。

现在让我们了解代码(正如我之前所说,宏记录器不会创建完美的代码,因此您必须每次都清理它,我们将在下一部分中学习)。

您已完成 中的所有四个活动,并且宏记录器已生成由四部分组成的代码。

宏记录器生成的代码
  1. 在第一部分中,代码表示所选单元格的字体颜色应该是红色,并且它使用了一个数值。
  2. 代码的第二部分指示所选单元格的字体大小应为“12”。
  3. 第三部分说字体样式应该是“Verdana”。
  4. 最后,在第四部分中,它说所选单元格的字体应该是粗体。

清理录制的宏

此时,您已经录制了第一个宏,并且知道该代码是如何生成的。但是您需要清理模块中的代码。

 Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .TintAndShade = 0 End With With Selection.Font .Name = "Calibri" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNo .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With With Selection.Font .Name = "Verdana" .Size = 12 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .Color = -16776961 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With Selection.Font.Bold = True End Sub

如果你仔细观察的话,这比他能做的活动要长得多。此代码中包含许多不是必需的属性。

不仅使用此代码,每次录制宏时都必须每次都对其进行清理。

但在开始清理该代码之前,您需要记住您所做的四项活动,您需要在模块中为其添加代码:

  • 字体颜色:红色
  • 字体大小:12
  • 字体样式: Verdena
  • 字体文本:粗体

让我们确定执行这四个活动的代码行。

识别代码行

现在您已经确定了执行您执行的实际活动的代码行,我们也有这个由四部分组成的代码。

是时候清理代码并删除所有不需要的行了。请按照以下步骤操作。

  • 在第一部分中,您需要应用红色字体颜色的行代码,因此“TintAndShade”属性不需要它。
应用红色字体颜色的行代码
  • 现在,在第二部分中,我们需要字体大小,而不是所有其他属性,因此删除它们。
字体大小
  • 之后,在第三部分中,我们需要字体名称属性,因此删除所有其他属性。
字体名称属性
  • 在第四部分中,只有一行代码,即使字体加粗。

此时代码如下所示,比宏记录器生成的代码低很多。

将字体设为粗体
 Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 End With With Selection.Font .Size = 12 End With With Selection.Font .Name = "Verdana" End With Selection.Font.Bold = True End Sub

但您仍然可以做得更多。

如果仔细查看代码,它使用了“With Selection.Font”四次,但由于您引用了所有四个属性的同一个对象,因此您可以使用它一次。

所以最终的代码将是:

最终代码
 Sub HighlightCell() ' 'HighlightCell Macro 'This macro applies a red color, font size 12, 'font style Verdana, and makes the font bold ' 'Keyboard Shortcut: Ctrl+Shift+H ' With Selection.Font .Color = -16776961 .Name = "Verdana" .Size = 12 .Bold = True End With End Sub

当您运行此代码时,它将执行您记录的相同活动。

你做了什么?

在新代码中,您只有执行所需活动的代码行。

这里要理解的一点是,每个对象总是有属性,并且当宏记录器记录时,它会向该对象添加所有这些属性,即使您不使用它们。

这就是为什么您需要从代码中删除所有这些属性。

另一件事是,即使您在代码中只使用一个对象,当您执行不同的活动时,宏记录器也会一次又一次地引用它,这就是您使用“With Selection.Font”一次并添加其下面的所有属性的原因。

在所有情况下,要清理宏记录器生成的任何代码,您必须识别执行所需活动的实际代码行并删除其余代码。

清理保存的宏代码时,最好的方法是逐步调试代码。

阅读

  • 并排打开VBA编辑器和Excel窗口,然后按F8逐步运行代码。
  • 由于 Excel 窗口在侧面打开,因此您可以看到哪一行代码正在执行该活动。
  • 一旦您确定了所需的代码,您就可以删除该代码,但这是不必要的。

命名宏

每次录制宏时,都需要为该宏命名,但名称必须符合一些规则:

  • 宏名称的长度最多可达 80 个字符。
  • 不能使用空格、标点符号或特殊字符。
  • 它必须以字母开头。

除了这些规则之外,VBA 还禁止使用一些单词作为名称。

另一方面,必须使用有意义的名称,而不是使用 Macro1 或 Test1 等默认名称。

由于宏名称中不能使用空格,因此可以使用下划线或将每个单词的第一个字母大写以提高可读性。

保存录制的宏

在录制宏之前,您必须指定要将其保存到的位置,为此您有以下三个选项:

存储录制的宏
  • 新工作簿:如果您想将宏保存在新工作簿中,可以选择此选项。
  • 此工作簿:通过选择此选项,您可以将宏保存在当前工作簿中。
  • 个人宏工作簿:使用此选项,您可以访问所有工作簿中的宏。

相对参考

在录制上面的宏时,我告诉您在按“开始录制”按钮之前选择“使用相对引用”。

在Excel中,当您录制宏时,Excel默认使用“绝对引用”。但是,您可以在录制宏之前更改它。

要点是,如果您希望宏在工作表中的任何位置执行记录的活动,那么使用相对引用至关重要。

为了让您了解两种参考模式之间的区别,我希望您以两种不同的方式记录活动。

  • 首先,选择单元格 A1 并开始录制宏(不启用“使用相对引用”),然后选择单元格 E5
  • 您将通过宏录制器获得以下代码:
 Sub AbsoluteReferenceMacro() Range("E5").Select End Sub
  • 再次选择单元格 A1,启用“使用相对引用”并记录相同的活动(选择单元格 E5)。
  • 但目前,您得到的代码有所不同:
 Sub RelativeReferenceMacro() ActiveCell.Offset(4, 4).Range(“A1”).Select End Sub

您记录了执行相同活动但使用不同参考模式的这两个代码。正确的?

第一个宏代码很容易理解;它说选择单元格 E5。

如果您运行此宏,它会执行相同的操作,即选择单元格 E5,无论您此时选择的是哪个单元格。

另一方面,第二个宏代码说明了其他内容,如果您在运行此代码之前选择另一个单元格,它将选择另一个单元格。

为了什么?

当您录制此宏时,活动单元格是 A1,然后您选择了 E5,它位于单元格 A1 下方四个单元格和右侧四个单元格处。

现在,因为您使用相对引用保存了该宏,所以这将始终选择该单元格,即活动单元格下方四个单元格和右侧四个单元格。

假设如果活动单元格是 D4,它将选择单元格 H8,该单元格向下四个单元格,向右四个单元格。

您可以随时更改参考,甚至在录制过程中也是如此。

宏观突破

遗憾的是,Excel 不允许您在录制宏时暂停宏。这在 Microsoft Word 中可行,但在 Excel 中不行。

如果您在录制需要执行许多活动的宏时,最好将其分成几部分录制,以便减少出错的机会。

宏记录器的限制

是的,宏录制器存在一些限制。您可以使用 VBA 代码执行许多操作,但宏记录器无法记录所有活动。

  • 无法创建自定义函数:VBA 允许您创建可在工作表中使用的自定义函数,但在录制宏时这是不可能的。
  • 无法使用内置函数:VBA 有其函数( VBA 函数),但不能将它们与宏记录器一起使用。
  • 无法测试条件:录制宏时,无法使用VBA IF Then Else 语句来检查条件。
  • 无法循环:在VBA中,您可以在编写代码时使用循环语句,但这对于宏记录器是不可能的。
  • 无法使用对象执行活动:录制宏时,如果没有实际选择对象,则无法执行操作。例如,如果您想要将特定单元格中的文本加粗,则必须首先选择该单元格。

是否值得使用宏录制器?

我敢打赌你心里一定有这个问题,而且这个问题是有道理的。让我与您分享一个个人故事来回答这个问题。

几年前,我正在编写一些VBA 代码来插入数据透视表,当时我并不知道编写此代码需要使用的所有对象。所以我做了什么,我在手动创建数据透视表时录制了一个宏。

接下来,我查看了这段代码,以了解插入数据透视表所涉及的整个过程。是的,这段代码并不完美,但给了我一个编写的想法。

我的意思是,可能有一些情况你需要编写代码,而宏录制器可以在那个时候帮助你。宏记录器还帮助我为这个库存模板编写代码。

要成功录制宏,应重点关注以下几点:

  • 定义将在其中保存宏的工作簿并关闭所有其他工作簿。
  • 确保选择正确的对象来录制宏。
  • 请务必在保存宏之前决定是使用绝对引用还是相对引用。
  • 计划您想要采取的行动。

经常问的问题

宏录制器按钮在哪里?

它位于“开发人员”选项卡上的代码组中。

如何查看宏录制器生成的代码?

您可以从 Visual Basic 编辑器中看到它。

宏记录器会生成完美的代码吗?

并非如此,您需要在保存后清理此代码。

添加评论

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