Table of contents
本教程将使你走上学习Excel宏的道路。 你会发现如何在Excel中记录宏和插入VBA代码,将宏从一个工作簿复制到另一个工作簿,启用和禁用它们,查看代码,进行修改,以及更多。
对于Excel新手来说,宏的概念往往看起来难以逾越。 的确,要掌握VBA可能需要几个月甚至几年的培训。 然而,这并不意味着你不能立即利用Excel宏的自动化能力。 即使你是一个完全的VBA编程新手,你也可以轻松地录制一个宏来自动化一些重复的任务。
这篇文章是你进入迷人的Excel宏世界的切入点。 它涵盖了你需要知道的基本知识,并提供了相关的深入教程的链接。
什么是Excel中的宏?
Excel宏是一组以VBA代码形式存储在工作簿中的命令或指令。 你可以把它看作是一个执行预定义动作序列的小程序。 一旦创建,宏可以随时重复使用。 运行宏会执行它包含的命令。
通常情况下,宏用于自动化重复性任务和日常工作。 熟练的VBA开发人员可以编写真正复杂的宏,远远超过减少击键的数量。
很多时候,你可能会听到人们把 "宏 "称为 "VBA"。 从技术上讲,这是有区别的:宏是一段代码,而Visual Basic for Applications(VBA)是微软为编写宏而创造的编程语言。
为什么要使用Excel宏?
宏的主要目的是在更短的时间内完成更多的工作。 就像你使用公式来计算数字和处理文本字符串一样,你可以使用宏来自动执行频繁的任务。
比方说,你要为你的主管创建一份周报。 为此,你从几个或更多的外部资源导入各种分析数据。 问题是,这些数据很乱,多余,或者不是Excel能理解的格式。 这意味着你需要重新格式化日期和数字,修剪多余的空格和删除空白,复制和粘贴信息到适当的列。构建图表以可视化趋势,并做更多不同的事情,使你的报告清晰和用户友好。 现在,成像所有这些操作都可以在鼠标点击中立即为你执行!这将是一个巨大的挑战。
当然,建立一个复杂的宏需要时间,有时甚至比手动执行同样的操作要花更多的时间。 但是,创建一个宏是一次性的设置。 一旦编写、调试和测试,VBA代码将快速无误地完成工作,最大限度地减少人为错误和昂贵的错误。
如何在Excel中创建一个宏
有两种方法可以在Excel中创建宏--通过使用宏记录器和Visual Basic编辑器。
提示:在Excel中,对宏的大多数操作是通过 开发商 选项卡,所以一定要把 "开发人员 "选项卡添加到你的Excel功能区。
录制一个宏
即使你对一般的编程,特别是VBA一无所知,只要让Excel把你的操作记录成一个宏,你就可以轻松地实现一些工作的自动化。 在你执行步骤的时候,Excel会密切关注并记下你的鼠标点击和VBA语言的击键。
宏记录器几乎可以捕捉到你所做的一切,并产生一个非常详细的(通常是多余的)代码。 在你停止记录并保存宏之后,你可以在Visual Basic编辑器中查看其代码,并做一些小的修改。 当你运行宏时,Excel会回到记录的VBA代码,并执行完全相同的动作。
要开始录音,请点击 记录巨集 的按钮。 开发商 选项卡或 状况 吧。
详细情况请见如何在Excel中记录宏。
在Visual Basic编辑器中编写一个宏
Visual Basic for Applications (VBA)编辑器是Microsoft Excel保存所有宏的代码的地方,包括记录的和手动编写的。
在VBA编辑器中,你不仅可以编写一连串的动作,还可以创建自定义函数,显示你自己的对话框,评估各种条件,最重要的是编写逻辑代码!自然,创建你自己的宏需要一些VBA语言的结构和语法知识,这超出了本教程的初学者范围。 但没有什么会防止你重复使用别人的代码(比如,你在我们的博客上发现的代码:),即使是一个完全的Excel VBA新手也应该没有任何困难
首先,按Alt + F11打开Visual Basic编辑器。 然后,在这两个快速步骤中插入代码。
- 在左边的项目资源管理器中,右键单击目标工作簿,然后单击 插入 > 模块 .
- 在右边的代码窗口,粘贴VBA代码。
完成后,按F5来运行宏。
详细步骤请见如何在Excel中插入VBA代码。
如何在Excel中运行宏
在Excel中启动一个宏有几种方法。
- 要从一个工作表中运行一个宏,请点击 巨集 上的按钮。 开发商 选项卡或按Alt + F8快捷键。
- 要从VBA编辑器中运行一个宏,请按以下任一步骤。
- F5来运行整个代码。
- F8可以逐行浏览代码,这对测试和排除故障非常有用。
此外,你可以通过点击自定义按钮或按指定的快捷键来启动一个宏。 完整的细节,请参见如何在Excel中运行宏。
如何在Excel中启用宏程序
由于安全原因,Excel中的所有宏都是默认禁用的。 因此,要想利用VBA代码的魔力为你服务,你需要知道如何启用它们。
为一个特定的工作簿打开宏的最简单方法是,点击 启用内容 按钮,当你第一次打开带有宏的工作簿时,黄色的安全警告条出现在工作表的顶部。
要了解更多关于宏的安全性,请看如何在Excel中启用和禁用宏。
如何改变宏设置
Microsoft Excel根据在 "宏 "中选择的宏设置来决定是否允许在你的工作簿中执行VBA代码。 信托中心 .
以下是访问Excel宏设置的步骤,如果需要的话,可以对其进行修改。
- 转到 文件 选项卡,并选择 选择 .
- 在左侧窗格中,选择 信托中心 ,然后点击 信任中心设置... .
- 在 信托中心 对话框,点击 宏观设置 左边的 "选择",选择所需的选项,然后点击 认可 .
在下面的屏幕截图中,选择了默认的宏设置。
更多信息,请参见Excel宏设置解释。
如何在Excel中查看、编辑和调试VBA代码
对宏的代码的任何修改,无论它是由Excel宏记录器自动生成还是由你自己编写,都是在Visual Basic编辑器中进行的。
要打开VB编辑器,可以按Alt + F11或者点击 视觉基础 上的按钮。 开发商 标签。
拟 查看和编辑 的特定宏的代码,在 项目探索者 左边的 "我的",双击包含它的模块,或者右击模块并选择 "我的"。 查看代码 打开 "代码 "窗口,你可以编辑代码。
拟 测试和调试 要退出调试模式,请点击F8键。 这将使你逐行浏览宏的代码,让你看到每一行对工作表的影响。 目前正在执行的行以黄色突出显示。 复位 工具栏上的按钮(蓝色方块)。
如何复制一个宏到另一个工作簿
你在一个工作簿中创建了一个宏,现在也想在其他文件中重新使用它? 在Excel中复制宏有两种方法。
复制包含宏的模块
如果目标宏驻留在一个单独的模块中,或者该模块中的所有宏对你有用,那么将整个模块从一个工作簿复制到另一个工作簿是有意义的。
- 打开两个工作簿--包含宏的工作簿和你想复制它的工作簿。
- 打开Visual Basic编辑器。
- 在 "项目资源管理器 "窗格中,找到包含宏的模块,将其拖到目标工作簿中。
在下面的截图中,我们正在复制 模块1 从 第一册 至 第二册 :
复制一个宏的源代码
如果该模块包含许多不同的宏,而你只需要一个,那么就只复制该特定宏的代码。 具体方法如下。
- 打开两个工作簿。
- 打开Visual Basic编辑器。
- 在项目资源管理器窗格中,双击包含你想复制的宏的模块,打开其代码窗口。
- 在 "代码 "窗口中,找到目标宏,选择其代码(以""开头)。 子 并以 结束子程序 )并按Ctrl + C复制它。
- 在项目资源管理器中,找到目标工作簿,然后在其中插入一个新的模块(右击工作簿,点击 插入 > 模块 )或双击一个现有的模块来打开其代码窗口。
- 在目标模块的代码窗口,按Ctrl + V粘贴代码。 如果该模块已经包含一些代码,向下滚动到最后一行代码,然后粘贴复制的宏。
如何删除Excel中的宏
如果你不再需要某个VBA代码,你可以通过以下方式删除它 宏观 对话框或Visual Basic编辑器。
从工作簿中删除一个宏
要从Excel工作簿中直接删除一个宏,请执行以下步骤。
- 关于 开发商 选项卡,在 编码 组,点击 巨集 按钮或按Alt + F8快捷键。
- 在 宏观 对话框,选择你要删除的宏,然后点击 删除 .
提示。
- 要查看所有打开的文件中的所有宏,选择 所有开放的工作簿 从 巨集在 下拉列表。
- 为了能够删除个人宏工作簿中的宏,你需要先取消隐藏Personal.xlsb。
通过Visual Basic编辑器删除一个宏
使用VBA编辑器的一个好处是,它可以让你一次性删除整个模块及其包含的所有宏。 另外,VBA编辑器允许删除个人宏工作簿中的宏,而不需要取消隐藏。
为了永久地 删除一个模块 ,执行这些步骤。
- 在 项目探索者 ,右键单击该模块,并选择 移除 从上下文菜单中选择。
- 当被问及是否要在删除模块之前导出该模块时,请点击 没有 .
拟 删除一个特定的宏 或者,你可以通过使用以下方法删除一个宏 工具 VBA编辑器的菜单。
- 从 工具 菜单,选择 巨集 ...... 巨集 对话框会出现。
- 在 巨集 在 下拉列表,选择包含不需要的宏的项目。
- 在 巨集名称 框中,选择该宏。
- 点击 删除 按钮。
如何在Excel中保存宏
要保存Excel中的宏,无论是录制的还是手动编写的,只需将工作簿保存为启用的宏(*.xlms)。 下面是方法。
- 在包含该宏的文件中,点击 拯救 按钮或按Ctrl + S 。
- ǞǞǞ 另存为 会出现对话框。 选择 Excel Macro-Enabled 工作簿 (*.xlsm) 从 保存为类型 下拉列表,并点击 拯救 :
如何在Excel中导出和导入宏
如果你想和别人分享你的VBA代码,或者把它们移到另一台电脑上,最快的方法是把整个模块导出为一个.bas文件。
导出宏
要导出你的VBA代码,这是你需要做的。
- 打开包含宏的工作簿。
- 按Alt + F11打开Visual Basic编辑器。
- 在项目资源管理器中,右键单击包含宏的模块,选择 输出文件 .
- 导航到你想保存导出文件的文件夹,为文件命名,然后点击 拯救 .
导入宏
要将带有VBA代码的.bas文件导入你的Excel中,请按照以下步骤进行。
- 打开你想导入宏的工作簿。
- 打开Visual Basic编辑器。
- 在项目资源管理器中,右键单击项目名称,选择 进口文件 .
- 导航到.bas文件并点击 开放式 .
Excel宏的例子
学习Excel VBA的最好方法之一是探索代码样本。 下面你会发现一些非常简单的VBA代码的例子,这些代码可以实现一些基本操作的自动化。 当然,这些例子不会教你编码,为此有数百个专业级的VBA教程。 我们只是旨在说明VBA的一些常见功能,希望能使其理念对你更熟悉一些。你。
取消隐藏工作簿中的所有工作表
在这个例子中,我们使用 活跃的工作簿 对象来返回当前活动的工作簿和 对于每个 循环逐一浏览工作簿中的所有工作表。 对于每一个找到的工作表,我们设置 可见 财产,以 xlSheetVisible .
Sub Unhide_All_Sheets() Dim wks As Worksheet For Each wks In ActiveWorkbook.Worksheets wks.Visible = xlSheetVisible Next wks End Sub隐藏活动工作表或使其非常隐蔽
要操作当前活动的工作表,请使用 活动表 这个样本宏改变了 可见 活动工作表的属性为 xlSheetHidden 要使工作表非常隐蔽,可将其设置为 可见 财产,以 xlSheetVeryHidden .
Sub Hide_Active_Sheet() ActiveSheet.Visible = xlSheetHidden End Sub取消选定范围内的所有合并单元格的合并
如果你想在一个范围而不是整个工作表上执行某些操作,可以使用 选择 例如,下面的代码将一次性取消选定范围内的所有合并单元格的合并。
Sub Unmerge_Cells() Selection.Cells.UnMerge End Sub显示一个消息框
要向你的用户显示一些信息,可以使用 MsgBox 下面是这样一个最简单形式的宏的例子。
Sub Show_Message() MsgBox ( "Hello World!" ) End Sub在现实生活中的宏中,消息框通常用于信息或确认目的。 例如,在执行一个动作(在我们的例子中是取消合并单元格)之前,你会显示一个 是/否 如果用户点击 "是",所选单元格就会被取消合并。
Sub Unmerge_Selected_Cells() Dim Answer As String Answer = MsgBox( "Are you sure you want to unmerge these cells?" , vbQuestion + vbYesNo, "Unmerge Cells" ) If Answer = vbYes Then Selection.Cells.UnMerge End If 结束Sub为了测试代码,选择一个或多个包含合并单元格的区域并运行宏。 将出现以下信息。
下面是更复杂的宏的链接,这些宏将具有挑战性和耗时的任务自动化。
- 从多个工作簿中复制工作表到一个工作簿的宏程序
- 在Excel中复制工作表的宏程序
- 在Excel中按字母顺序排列标签的宏程序
- 不需要密码就能解除工作表保护的宏程序
- 计算和总结有条件的彩色单元格的宏程序
- 将数字转换成文字的宏程序
- 隐藏除活动工作表外的所有工作表的宏程序
- 取消隐藏床单的宏程序
- 取消隐藏所有栏目的宏程序
- 使床单非常隐蔽的宏程序
- 删除活动页面中所有换行符的宏程序
- 删除空白行的宏程序
- 删除每隔一行的宏程序
- 删除空白列的宏程序
- 每隔一列插入的宏程序
- 在Excel中进行拼写检查的宏
- 将列转为行的宏程序
- 在Excel中翻转列的宏程序
- 设置打印区域的宏程序
- 插入分页符的宏程序
如何保护Excel宏
如果你想防止你的宏被他人查看、修改或执行,你可以用密码保护它。
锁定巨集以便查看
为了保护你的VBA代码不被未经授权的人查看和编辑,请做到以下几点。
- 打开VBA编辑器。
- 在项目资源管理器中,右键单击你想锁定的项目,并选择 VBAProject属性...
- 在 项目属性 对话框,在 保护 选项卡,检查 锁定项目以便查看 框,输入两次密码,然后点击 认可 .
- 保存、关闭并重新打开你的Excel文件。
当你试图在Visual Basic编辑器中查看代码时,会出现下面的对话框。 键入密码并点击确定。
拟 解锁宏 ,只要打开 项目属性 再一次在对话框中删除一个"√"。 锁定项目以便查看 箱子。
注意:这种方法可以保护代码不被查看和编辑,但不能阻止它被执行。
密码保护宏的运行
为了保护你的宏不被执行,以便只有知道密码的用户才能运行它,请添加以下代码,用你的真实密码替换 "密码 "一词。
Sub Password_Protect() Dim password As Variant password = Application.InputBox("Please enter Password" , "Password Protected Macro" ) Select Case password Case Is = False 'do nothing Case Is = "password" ' your code here Case Else MsgBox "Incorrect Password" End Select End Sub该宏使用 输入框 功能来提示用户输入密码。
如果用户的输入与硬编码的密码相匹配,你的代码就会被执行。 如果密码不匹配,就会显示 "密码不正确 "的消息框。 为了防止用户在Visual Basic编辑器中偷看密码,记住要按照上面的解释锁定宏,以便查看。
注意:鉴于网络上各种密码破解器的数量,必须认识到这种保护并不是绝对的。 你可以把它看作是对意外使用的保护。
Excel宏提示
Excel VBA专业人员已经设计了大量巧妙的技巧,使他们的宏更有效。 下面我将分享我最喜欢的几个。
如果你的VBA代码主动操作单元格内容,你可以通过关闭屏幕刷新和公式重新计算来加快其执行速度。 在执行完你的代码后,再次打开这个功能。
以下几行将被添加到你的代码的开头(在以""开头的行之后)。 点状 或在 子 线)。
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual以下几行将被添加到你的代码的末尾(在 结束子程序 ):
Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic如何将VBA代码分成多行
在VBA编辑器中编写代码时,有时你可能会创建非常冗长的语句,因此你必须水平滚动来查看该行的结尾。 这并不影响代码的执行,但使检查代码变得困难。
要把一个长的语句分成几行,可以输入一个 空间 然后是一个 强调 (在VBA中,这被称为"_",即在你想要断行的地方。 续行符 .
为了正确地在下一行继续编写代码,请遵循这些规则。
- 不要在参数名称的中间分割代码。
- 不要使用下划线来中断注释。 对于多行注释,在每行的开头输入一个撇号(')。
- 下划线必须是一行中的最后一个字符,后面不能有其他字符。
下面的代码示例显示了如何将该语句分成两行。
Answer = MsgBox( "Are you sure you want to unmerge these cells?" , _ vbQuestion + vbYesNo, "Unmerge Cells" )如何使一个宏能够从任何工作簿中访问
当你在Excel中编写或记录一个宏时,通常只能从那个特定的工作簿中访问。 如果你想在其他工作簿中重复使用相同的代码,请将其保存到个人宏工作簿中。 这将使你在任何时候打开Excel时都能使用该宏。
唯一的障碍是,个人宏工作簿在Excel中默认不存在。 要创建它,你需要至少记录一个宏。 以下教程提供了所有细节:Excel中的个人宏工作簿
如何撤销一个宏操作
执行宏后,不能通过按Ctrl+Z或点击Ctrl+Z来恢复其动作。 撤销 按钮。
当然,有经验的VBA程序员可以在允许宏对工作表进行任何修改之前验证输入值和/或起始条件,但在大多数情况下这是相当复杂的。
一个更简单的方法是在宏的代码中保存活动的工作簿。 为此,只需在让你的宏做其他事情之前添加下面这一行。
ActiveWorkbook.Save你也可以选择显示一个消息框,告知用户在执行宏的主代码之前已经保存了当前工作簿。
这样,如果你(或你的用户)对结果不满意,你可以简单地关闭,然后再重新打开工作簿。
当工作簿中没有宏时,阻止Excel显示安全警告
你是否曾发现自己处于这样一种情况:Excel不断询问你是否要启用宏,而你肯定知道这个特定工作簿中没有宏?
最有可能的原因是,一些VBA代码被添加后又被删除,留下了一个空的模块,从而触发了安全警报。 要摆脱它,只需删除该模块,保存工作簿,关闭并重新打开它。 如果这没有帮助,请做以下工作。
- 对于 这本工作手册 并为每个单独的工作表,打开代码窗口,按Ctrl + A选择所有的代码并删除它(即使代码窗口看起来是空的)。
- 删除工作簿中包含的任何UserForms和Class Modules。
这就是在Excel中创建和使用VBA宏的方法。 感谢你的阅读,希望下周能在我们的博客上再次见到你!