如何在excel中录制宏?
关键点
- 录制宏意味着录制您在 Excel 中执行的操作。
- 您必须使用宏录制器来录制宏。
- 当您执行活动时,宏记录器会在后面生成代码。
- 在 Excel 中,录制宏时无法暂停。
- 宏录制器不会创建完美的代码,因此请务必在录制后清理代码。
本指南将帮助您了解录制宏的各个方面。您还将了解如何在保存代码后清理代码。
那么,让我们开始吧。
什么是宏录制器?
Excel Macro Recorder 是一个可以记录(并非全部)您在 Excel 中执行的操作并为其生成代码的工具。执行一次特定任务,它会为此生成一个宏,下一次您需要运行该代码,而不是手动执行该任务。
想象一下摄像机,它的工作原理与摄像机类似,并为您正在执行的活动生成代码。
您应该了解,有时宏录制器可能无法提供代码。但是,如果您不了解代码,这仍然是学习代码的好方法。
您可以在开发人员选项卡中找到宏录制器按钮。
使用VBA在Excel中进行编程是Excel的高级技能之一,要开始使用VBA,您需要精通录制宏。
录制宏之前进行规划
如果你想录制视频,你需要先做一些计划,比如创建脚本、有合适的灯光等。
同样,录制宏也需要一些计划。
关键是您不想在再次使用录制的宏时获取您不想运行的活动的代码。
最好的方法是写下您需要完成的步骤,然后在录制时坚持执行它们。
在这里,我们将录制一个宏,可以将以下格式应用于选定的单元格:
- 字体颜色:红色
- 字体大小:12
- 字体样式: Verdena
- 字体文本:粗体
正如我所说,规划是必不可少的,在录制这个宏之前,我们需要注意一件事,那就是在开始录制之前选择目标单元格。
正如我所说,规划是必不可少的,在录制这个宏之前,我们需要注意一件事,那就是在开始录制之前选择目标单元格。
原因是,如果我们在录制宏时选择一个单元格,它也会保存该选择。
因此,当您再次运行此宏时,它将选择该特定单元格以对其应用所有格式。但我们想要的是在单元格上应用格式,该单元格处于活动状态(已选择)。
使用宏录制器录制宏的步骤
要在 Excel 中保存宏,您可以按照以下步骤操作:
- 首先,选择单元格 A4(这是我们将应用格式并记录宏的单元格)。
- 之后,转到“开发人员选项卡”,在按“保存”按钮之前,启用相对引用(我们将在几分钟内了解更多信息)。
- 按录音按钮。
- 单击它的那一刻,您将看到一个对话框,用于填写有关您要录制的宏的一些详细信息(是的,我们需要填写它)。
- 宏名称:“HighlightCell”。
- 热键:按 Shift+H 设置键盘快捷键 Control+Shift+H。
- 将宏存储在:选择个人宏绑定器。
- 描述:该宏应用红色、字体大小 12、Verdana 字体样式,并使字体加粗。
- 最后,单击“确定”。
- 此时,Excel 开始保存所有内容(您可以在状态栏上看到“宏正在录制,单击以停止录制”的图标)。
- 现在应用我们决定的四种格式。
- 字体颜色:红色
- 字体大小:12
- 字体样式: Verdena
- 字体文本:粗体
- 完成此操作后,返回开发人员选项卡并单击“停止录制”,或者您也可以从状态栏中显示“单击此处停止录制”停止录制。登记”。
恭喜!您已经完成了它,此时您的工作簿中已保存了一个宏,但现在下一步是理解它。
宏记录器如何生成代码
当您执行活动时,宏录制器会在后面为您生成一个代码。
要理解这一点,您首先需要查看代码。为此,请打开Visual Basic 编辑器,转到“开发人员”选项卡 ➜ Visual Basic 编辑器。
然后打开存储代码的 module1。
在代码窗口中,您可以看到宏录制器生成的整个代码以及您输入的所有详细信息。
正如你所看到的,宏名称、快捷键和描述都在代码之前。
现在让我们了解代码(正如我之前所说,宏记录器不会创建完美的代码,因此您必须每次都清理它,我们将在下一部分中学习)。
您已完成 中的所有四个活动,并且宏记录器已生成由四部分组成的代码。
- 在第一部分中,代码表示所选单元格的字体颜色应该是红色,并且它使用了一个数值。
- 代码的第二部分指示所选单元格的字体大小应为“12”。
- 第三部分说字体样式应该是“Verdana”。
- 最后,在第四部分中,它说所选单元格的字体应该是粗体。
清理录制的宏
此时,您已经录制了第一个宏,并且知道该代码是如何生成的。但是您需要清理模块中的代码。
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 编辑器中看到它。
并非如此,您需要在保存后清理此代码。