如何在Excel中记录一个宏

  • Share This
Michael Brown

为初学者提供了录制、查看、运行和保存宏的分步教程。 你还将学习宏在Excel中如何工作的一些内在机制。

宏是在Excel中实现重复性工作自动化的好方法。 如果你发现自己反复做同样的事情,可以把你的动作记录成宏,并给它指定一个键盘快捷键。 现在,你可以让所有记录的动作自动执行,只需按一下键盘就可以了

    如何在Excel中录制一个宏

    像其他VBA工具一样,Excel宏驻留在 开发商 因此,你需要做的第一件事是将 "开发 "选项卡添加到你的Excel功能区。

    要在Excel中记录一个宏,请执行以下步骤。

    1. 关于 开发商 选项卡,在 编码 组,点击 记录巨集 按钮。

      或者,点击 记录巨集 的左边的按钮。 状况 吧。

      如果你喜欢用键盘而不是鼠标工作,请按以下键序Alt , L , R(一个一个地按,不要一次按所有的键)。

    2. 记录巨集 在出现的对话框中,配置你的宏的主要参数。
      • 宏观 名称 框中输入宏的名称,尽量使其有意义和描述性,这样以后就能在列表中快速找到该宏。

        在宏的名称中,你可以使用字母、数字和下划线;第一个字符必须是字母。 不允许有空格,所以你应该保持一个单字的名称,每个部分以大写字母开始(如 我的第一麦克罗 )或用下划线分隔单词(如 我的第一个Macro ).

      • 捷径键 框中,键入任何字母为该宏指定一个键盘快捷键(可选)。

        大写字母和小写字母都可以使用,但你最好使用大写字母组合(Ctrl + Shift + 字母),因为当包含宏的工作簿打开时,宏的快捷键会覆盖任何默认的Excel快捷键。 例如,如果你为宏指定Ctrl + S,你将失去用快捷键保存Excel文件的能力。 指定Ctrl + Shift + S将保持标准的保存快捷方式。

      • 将宏存储在 下拉列表,选择你想存储宏的位置。
        • 个人宏程序工作手册 - 将该宏存储到一个特殊的工作簿中,称为 个人.xlsb 只要你使用Excel,存储在该工作簿中的所有宏都可以使用。
        • 本工作手册 (默认) - 宏将被保存在当前工作簿中,当你重新打开工作簿或与其他用户共享时,宏将可用。
        • 新工作手册 - 创建一个新的工作簿并将宏记录到该工作簿中。
      • 描述 框中,键入一个简短的描述,说明你的宏的作用(可选)。

        虽然这个字段是可选的,但我建议你总是提供一个简短的描述。 当你创建大量不同的宏时,它将帮助你快速了解每个宏的作用。

      • 点击 认可 来开始录制宏。

    3. 执行你想自动化的动作(请看录制宏的例子)。
    4. 完成后,点击 停止录影 上的按钮。 开发商 标签。

      或类似的按钮,在 状况 吧。

    在Excel中记录宏的例子

    为了看看它在实践中是如何工作的,让我们录制一个宏,对选定的单元格应用一些格式。 为此,请做以下工作。

    1. 选择一个或多个你想要格式化的单元格。
    2. 关于 开发商 选项卡或 状况 栏,点击 记录巨集 .
    3. 记录巨集 对话框,配置以下设置。
      • 命名该宏 标题_格式化 (因为我们要对列标题进行格式化)。
      • 将光标放在 捷径键 这将为该宏指定Ctrl + Shift + F的快捷方式。
      • 选择将宏存储在这个工作簿中。
      • 对于 描述 ,用下面的文字来解释这个宏的作用。 使文字变粗,增加填充颜色,并居中。 .
      • 点击 认可 开始录音。

    4. 以你想要的方式对预选的单元格进行格式化。 在这个例子中,我们使用粗体文本格式,浅蓝色填充颜色和居中对齐。

      提示:在你开始录制宏后,不要选择任何单元格。 这将确保所有的格式化应用于 选择 ,而不是一个具体的范围。

    5. 点击 停止录影 开发商 选项卡或 状况 吧。

    就这样!你的宏已经被记录下来了。 现在,你可以在任何工作表中选择任何单元格范围,按指定的快捷键(Ctrl+Shift+F),你的自定义格式将立即应用到所选单元格。

    如何在Excel中使用录制的宏程序

    Excel为宏提供的所有主要选项都可以通过以下方式访问 宏观 要打开它,请点击 巨集 上的按钮。 开发商 标签或按Alt+ F8快捷键。

    在打开的对话框中,你可以查看所有打开的工作簿中可用的或与某一特定工作簿相关的宏列表,并利用以下选项。

    • 运行 - 执行选定的宏。
    • 步入 - 允许你在Visual Basic编辑器中调试和测试该宏。
    • 编辑 - 在VBA编辑器中打开所选的宏,在那里你可以查看和编辑代码。
    • 删除 - 永久性地删除所选宏。
    • 选择 - 允许改变宏的属性,如相关的 捷径 钥匙 描述 .

    如何在Excel中查看宏

    Excel宏的代码可以在Visual Basic编辑器中查看和修改。 要打开编辑器,按Alt + F11或点击 视觉基础 上的按钮。 开发商 标签。

    如果你第一次看到VB编辑器,请不要感到气馁或害怕。 我们不打算谈论VBA语言的结构或语法。 本节只是让你对Excel宏的工作原理和录制宏的实际作用有一些基本了解。

    VBA编辑器有几个窗口,但我们将专注于两个主要窗口。

    项目探索者 - 显示所有打开的工作簿及其工作表的列表。 此外,它还显示模块、用户表格和类模块。

    代码窗口 - 在这里你可以查看、编辑和编写项目浏览器中显示的每个对象的VBA代码。

    当我们记录这个样本宏时,在后台发生了以下事情。

    • 一个新的模块( Moduel1 )被插入了。
    • 宏的VBA代码是在代码窗口中写的。

    要查看某个特定模块的代码,请双击该模块( 模块1 通常情况下,一个宏代码有以下几个部分。

    巨集名称

    在VBA中,任何宏都以 后面是宏的名称,最后是 结束子程序 ,其中 "Sub "是指 子程序 (也叫 程序 )。 我们的样本宏被命名为 Header_Formatting() ,所以代码从这一行开始。

    Sub Header_Formatting()

    如果你希望 重命名该宏 ,只需删除当前名称并直接在代码窗口中输入一个新的名称。

    评论

    以撇号(')为前缀的行,默认显示为绿色,不执行。 这些是为了提供信息而添加的注释。 这些注释行可以安全地删除而不影响代码的功能。

    通常,录制的宏有1-3个注释行:宏的名称(必须的);描述和快捷方式(如果在录制前指定)。

    可执行代码

    在注释之后,就是执行你所记录的动作的代码。 有时,一个记录的宏可能有很多多余的代码,这对于弄清VBA的工作原理可能还是有用的 :)

    下面的图片显示了我们的宏的每一部分代码的作用。

    如何运行录制的宏

    通过运行宏,你告诉Excel回到录制的VBA代码,并执行完全相同的步骤。 在Excel中运行录制的宏有几种方法,以下是最快的方法。

    • 如果你已经分配了一个 键盘快捷方式 到宏,按该快捷键。
    • 按Alt + 8或点击 巨集 上的按钮。 开发商 标签,在 宏观 对话框,选择所需的宏,并点击 运行 .

    也可以通过点击自己的按钮来运行录制的宏。 以下是制作步骤:如何在Excel中创建一个宏按钮。

    如何在Excel中保存宏

    无论你是录制了一个宏还是手动编写了VBA代码,要保存宏,你需要将工作簿保存为启用了宏的工作簿(扩展名为.xlms)。 下面是方法。

    1. 在包含该宏的工作簿中,点击 拯救 按钮或按Ctrl + S 。
    2. 另存为 对话框,选择 Excel Macro-Enabled 工作簿 (*.xlsm) 保存为类型 下拉列表,然后点击 拯救 :

    Excel宏:什么是记录,什么不是记录

    正如你刚才所看到的,在Excel中记录一个宏很容易。 但要创建有效的宏,你需要了解幕后发生的事情。

    记录的内容

    Excel的宏记录器捕获了相当多的东西--几乎所有的鼠标点击和按键。 因此,你应该仔细考虑你的步骤,以避免多余的代码,这可能会导致你的宏的意外行为。 以下是Excel记录的几个例子。

    • 用鼠标或键盘选择单元格。 只有行动前的最后一次选择会被记录。 例如,如果你选择A1:A10区域,然后点击A11单元格,只有A11的选择会被记录。
    • 单元格格式化,如填充和字体颜色、对齐、边框等。
    • 数字格式化,如百分比、货币等。
    • 编辑公式和数值。 在你按下回车键后,更改会被记录下来。
    • 滚动,移动Excel窗口,切换到其他工作表和工作簿。
    • 添加、命名、移动和删除工作表。
    • 创建、打开和保存工作簿。
    • 运行其他宏。

    不能记录的内容

    尽管Excel可以记录许多不同的东西,但某些功能超出了宏记录器的能力。

    • 对Excel功能区和快速访问工具栏进行定制。
    • 在Excel对话框中的操作,如 条件性格式化 查找和替换 (只有结果被记录)。
    • 与其他程序的互动。 例如,你不能记录从Excel工作簿到Word文档的复制/粘贴。
    • 任何涉及到VBA编辑器的东西。 这带来了最重要的限制--许多可以在编程层面完成的事情不能被记录。
      • 创建自定义函数
      • 显示自定义对话框
      • 使循环,如 对于下一步 , 对于每个 , 做的同时 ,等等。
      • 评估条件。 在VBA中,你可以使用 IF Then Else 语句来测试一个条件,如果条件为真则运行一些代码,如果条件为假则运行另一个代码。
      • 基于事件执行代码 通过VBA,你可以使用许多事件来运行与该事件相关的代码(如打开工作簿、重新计算工作表、改变选择等等)。
      • 使用参数 在VBA编辑器中编写宏时,你可以为宏提供输入参数以执行某种任务。 一个记录的宏不能有任何参数,因为它是独立的,不与任何其他宏相连。
      • 例如,如果你录制了一个复制特定单元格的宏,例如在 共计 有了VBA,你可以对逻辑进行编码,也就是说,将复制的数值在 共计 行。

    尽管上述限制为录制的宏设定了许多界限,但它们仍然是一个很好的起点。 即使你对VBA语言一无所知,你也可以快速录制一个宏,然后分析其代码。

    在Excel中记录宏的实用技巧

    下面你会发现一些提示和说明,它们有可能为你节省大量的时间和神经,使你的学习曲线更顺畅,宏更有效。

    使用相对引用进行宏观记录

    在默认情况下,Excel使用 绝对的 参照 这意味着你的VBA代码将总是引用你所选择的相同的单元格,无论你在工作表中运行宏时处于什么位置。

    然而,可以将默认行为改为 相对引用 在这种情况下,VBA不会对单元格地址进行硬编码,而是相对于活动(当前选定)单元格进行工作。

    要录制一个具有相对引用功能的宏,请点击 使用 相互参照 上的按钮。 开发商 要返回到绝对引用,请再次点击该按钮来关闭它。

    例如,如果你用默认的绝对引用来记录设置一个表,你的宏将总是在同一个地方重新创建这个表(在这种情况下。 标题 在A1。 项目1 在A2中。 项目2 在A3中)。

    Sub Absolute_Referencing() Range( "A1"). Select ActiveCell.FormulaR1C1 = "Header" Range( "A2"). Select ActiveCell.FormulaR1C1 = "Item1" Range( "A3") Select ActiveCell.FormulaR1C1 = "Item2" End Sub

    如果你用相对引用的方式记录同一个宏,那么在运行宏之前,无论你把光标放在哪里,表都会被创建( 标题 在活动单元中。 项目1 在下面的单元格中,以此类推)。

    Sub Relative_Referencing() ActiveCell.FormulaR1C1 = "Header" ActiveCell.Offset(1, 0).Range( "A1").Select ActiveCell.FormulaR1C1 = "Item1" ActiveCell.Offset(1, 0).Range( "A1").Select ActiveCell.FormulaR1C1 = "Item2" ActiveCell.Offset( 1, 0) .Range( "A1").Select End Sub

    注意事项。

    • 当使用相对引用时,一定要在开始录制宏之前选择初始单元格。
    • 相对引用并不是对所有事情都有效,有些Excel功能,例如将一个范围转换为一个表格,需要绝对引用。

    通过使用键盘快捷键选择范围

    当你用鼠标或方向键选择一个单元格或单元格区域时,Excel会写入单元格地址。 因此,每当你运行宏时,所记录的操作将完全在相同的单元格上执行。 如果这不是你想要的,使用快捷键来选择单元格和区域。

    作为一个例子,让我们记录一个宏,为下表中的日期设置一个特定的格式(d-mmm-yy)。

    为此,你记录了以下操作:按Ctrl + 1,打开 格式化单元格 对话框>日期>选择格式>确定。 如果你的记录包括用鼠标或方向键选择范围,Excel将产生以下VBA代码。

    Sub Date_Format() Range( "A2:B4"). Select Selection.NumberFormat = "d-mmm-yy" End Sub

    运行上述宏,每次都会选择A2:B4范围。 如果你在表中增加一些行,它们不会被宏处理。

    现在,让我们看看当你用快捷方式选择表格时会发生什么。

    将光标放在目标区域(本例中为A2)的左上角单元格中,开始记录并按下Ctrl + Shift + End 。 结果,代码的第一行将是这样的。

    Range(Selection, ActiveCell.SpecialCells(xlLastCell))。 Select

    这段代码选择了从活动单元格到最后使用的单元格的所有单元格,这意味着所有新的数据将自动包含在选择中。

    或者,你也可以使用Ctrl + Shift + 箭头组合。

    • 按Ctrl + Shift + 向右箭头选择所有使用过的单元格,然后按
    • 按Ctrl + Shift + 向下箭头选择所有使用过的单元格下来。

    这将产生两行代码,而不是一行,但结果是一样的--所有数据在活动单元格下方和右侧的单元格将被选中。

    Range(Selection, Selection. End (xlToRight)).选择 Range(Selection, Selection. End (xlDown)).选择

    为选择而不是为特定的单元格录制一个宏

    上述方法(即从活动单元格开始选择所有使用过的单元格)对于在整个表格上执行同样的操作非常有效。 然而,在某些情况下,你可能希望宏处理某个范围而不是整个表格。

    为此,VBA提供了 选择 大多数可以用单元格来做的事情,也可以用选择来做。 这对你有什么好处? 在许多情况下,你根本不需要在记录时选择任何东西--只要为活动单元格写一个宏。 然后,选择你想要的任何单元格,运行宏,它就会操作整个选择。

    例如,这个单行宏可以将任何数量的选定单元格格式化为百分比。

    Sub Percent_Format() Selection.NumberFormat = "0.00%" End Sub

    仔细计划你的记录内容

    微软Excel宏记录器几乎可以捕捉到你所有的活动,包括你所犯的错误和纠正的错误。 例如,如果你按下Ctrl + Z来撤销某件事,这也会被记录下来。 最终,你可能会有很多不必要的代码。 为了避免这种情况,要么在VB编辑器中编辑代码,要么停止记录,删除有缺陷的宏,重新开始记录。

    在运行宏之前备份或保存工作簿

    因此,在第一次运行宏之前,有必要创建一个工作簿的副本,或至少保存当前的工作,以防止意外的变化。 如果宏做错了什么,只需关闭工作簿而不保存。

    保持记录的宏的简短

    当自动化一连串不同的任务时,你可能会想把它们都记录在一个宏中。 不这样做有两个主要原因。 首先,很难顺利地记录一个长的宏而不出错。 其次,大型宏很难理解、测试和调试。 因此,把一个大型宏分成几个部分是个好主意。 例如,当创建一个汇总表时从多个来源导入信息,你可以使用一个宏来导入信息,另一个宏来合并数据,第三个宏来格式化表格。

    我希望这个教程能给你一些关于如何在Excel中录制宏的启示。 无论如何,我感谢你的阅读,并希望下周在我们的博客上看到你的身影!

    Michael Brown is a dedicated technology enthusiast with a passion for simplifying complex processes using software tools. With more than a decade of experience in the tech industry, he has honed his skills in Microsoft Excel and Outlook, as well as Google Sheets and Docs. Michael's blog is dedicated to sharing his knowledge and expertise with others, providing easy-to-follow tips and tutorials for improving productivity and efficiency. Whether you're a seasoned professional or a beginner, Michael's blog offers valuable insights and practical advice for getting the most out of these essential software tools.