打开Excel和VBE(Visual Basic编辑器)。除非已更改,否则VBE窗口将包含_ProjectExplorer_窗口和_Properties_窗口(可从“查看”菜单访问这些窗口)。

项目浏览器:像文件管理器一样工作。帮助您浏览工作簿中的代码。

属性窗口:显示当前工作簿(例如_Book1_)的当前活动对象(例如_Sheet1_)的属性。

在本文中,我们将学习如何在Excel中轻松录制宏。

练习1:录制宏。

此练习显示了记录宏时发生的情况,并演示了记录绝对引用和相对引用之间的区别。

1.在新工作簿中的空白工作表上,选择单元格C10。2.启动“宏录制器”选项,将宏保存在_This Workbook_中。此时,VBE将创建一个新的_Modules_文件夹。查看它非常安全-您的操作不会被记录。单击文件夹旁边的[+],可以看到VBE在该文件夹中放置了一个模块,并将其命名为_Module1_。双击模块图标以打开其代码窗口。切换回Excel。

3.确保未按下_Stop Recording_工具栏上的“相对参考”按钮。 4.选择单元格B5并停止记录器。

5.切换到VBE并查看代码:

Range(“ B5”)。选择6。现在,以完全相同的方式记录另一个宏,但是这次按下了相对参考按钮。 7.切换到VBE,然后查看代码:

ActiveCell.Offset(-5,-1).Range(“ A1”)。Select8。现在记录另一个宏,但不要选择单元格B5,而是选择一个从B5开始的单元格3×3块(选择单元格B5:F7)

9.切换到VBE,然后查看代码:

ActiveCell.Offset(-5,-1).Range(“ A1:B3”)。Select 10.播放宏,首先选择与C10不同的单元格(对于Macro2和Macro3,起始单元格必须在第6行或下面-请参见下面的步骤11)

Macro1-始终将所选内容移至B5 Macro2-将所选内容移至所选单元格上5行,左侧1列的单元格。

Macro3-始终选择一个包含六个单元格的块,从所选单元格的左上方开始5行,并在其左侧增加一列。

11.运行Macro2,但是通过在第5行或更高行中选择一个单元来强制执行错误。该宏试图选择一个不存在的单元格,因为它的代码告诉它选择一个在起始点上方5行的单元格,而该单元格不在工作表的顶部。按“调试”进入导致问题的宏部分。

注意:当VBE处于调试模式时,导致问题的代码行以黄色突出显示。您必须先“重置”宏,然后才能继续。单击VBE工具栏上的重置按钮,或转到运行>重置。黄色突出显示消失,VBE退出调试模式。

12.尝试并预期这样的用户错误很重要。最简单的方法是修改代码以忽略错误并继续执行下一个任务。通过添加行来执行此操作…在错误的第一行上…紧接在宏的第一行的上方(在Sub Macro1()

下的行13。像以前一样运行_Macro2_,从图纸上开始过高。您键入的行告诉Excel忽略它无法执行的代码行。没有错误消息,并且宏已完成所有操作。请谨慎使用此错误处理方法。这是一个非常简单的宏。

| 14. | _ ||| 14.修改_Macro2_的代码以包含一个更复杂的错误处理程序,这样: |||| Sub Macro2()

发生错误GoTo ErrorHandler ActiveCell.Offset(-5,-1).Range(“ A1”)。选择Exit Sub ErrorHandler:

MsgBox“您必须启动在第5行下面

|结束子15.这次,当出现问题时,将向用户显示一个对话框。如果没有错误,行ExitSub导致宏在完成其工作后完成-否则,即使没有错误,用户也会看到该消息。

改进记录的宏学习VBA基础知识的好方法是记录一个宏,并了解Excel如何编写自己的代码。但是,记录的宏通常包含的代码要多得多。下面的练习演示了如何改进和简化已录制的宏生成的代码。

练习2:对记录的宏进行改进_此练习表明,记录宏时,通常会生成比所需更多的代码。它演示了使用With语句来整理代码。_

1.选择任何一个单元格或单元格块。

2.启动宏记录器并调用宏FormatCells。相对参考设置将不相关。

3.转到格式>单元格>字体,然后选择_Times New Roman_和_Red_。

转到模式,然后选择_Yellow_。

转到“对齐方式”,然后选择“ 水平”,“居中”。转到“数字”并选择“货币”。

4.单击确定,然后停止录像机。

5.单击撤消按钮(或_Ctrl + Z_)以撤消对工作表的更改。

6.选择一个单元格块并运行_FormatCells_宏。请注意,它无法撤消!键入单元格以检查格式化结果。

7.查看代码:

子FormatSelection()

Selection.NumberFormat =“ $#,## 0.00”

带有选择.Horizo​​ntalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .ShrinkToFit = False .MergeCells = False以With Selection.Font结尾。名称=“ Times New Roman”

Size = 10 .Strikethrough = False。上标= False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3以Selection结尾.Interior .ColorIndex = 6 .Pattern = xlSolid .PatternColorIndex = xlAutomatic以End Sub结尾。8.注意已记录的所有其他说明。删除代码行,以便仅保留以下内容:

子FormatSelection()

Selection.NumberFormat =“ $#,## 0.00”

With Selection .Horizo​​ntalAlignment = xlCenter With Selection.Font结尾。Name=“ Times New Roman”

ColorIndex = 3以Selection结尾。Interior.ColorIndex = 6以End结尾。Sub 9.运行宏以测试编辑后的代码。它仍然像以前一样工作。

10.现在,进一步修改代码:

子FormatSelection()

通过选择.NumberFormat =“ $#,## 0.00”

Font.ColorIndex = 3 .Interior.ColorIndex = 6以End Sub 11结尾。测试宏。一切仍然有效,代码将运行得更快。

12.尝试使用工具栏按钮而不是对话框来记录相同的宏:

将字体更改为_Times New Roman_更改字体颜色为_Red_更改填充颜色为_Yellow_单击_Center_按钮单击_Currency_按钮13.查看代码。您仍然会得到很多不必要的东西。 Excel正在记录所有_default_设置。其中大多数都可以安全删除。

14.尝试直接编辑代码以更改颜色,字体,数字格式等。

练习3:观看正在录制的宏_此练习表明您可以通过观看正在录制的宏构建来学习。这也是有时With语句不合适的示例。_

| 1.打开文件VBA01.xls。

尽管此工作表在视觉上还可以,并且用户可以理解,但是空白单元格的存在可能会引起问题。尝试过滤数据,看看会发生什么。转到数据>过滤器>自动过滤器,然后按地区或月份过滤。显然,Excel与用户所做的假设不同。空单元需要填充。

2.(垂直)平铺Excel和VBE窗口,使其并排放置。

3.选择数据中的任何单元格。如果它是一个空单元格,则必须与包含数据的单元格相邻。

4.启动宏记录器,并调用宏_FillEmptyCells_。

设置为记录相对参考。

5.在VBE窗口中找到并双击模块(Module1)

为当前工作簿打开编辑窗格,然后关闭“项目资源管理器”窗口和“属性”窗口(仅用于腾出空间)。

6.记录新的宏,如下所示:

步骤1. Ctrl + *(选择当前区域)

步骤2.编辑>转到>特殊>空白>确定(以选择当前区域中的所有空白单元格)

步骤3.键入= [UpArrow],然后按Ctrl + Enter(将键入的内容放入所有选定的单元格中)

步骤4. Ctrl + *(再次选择当前区域)

步骤5. Ctrl + C(复制选择-任何方法都可以)

步骤6.编辑>选择性粘贴>值>确定(将数据粘贴回到同一位置,但丢弃公式)

步骤7. Esc(退出复印模式)

步骤8.停止录音。

7.查看代码:

子FillEmptyCells()

Selection.CurrentRegion.Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.FormulaR1C1 =“ = R [-1] C”

Selection.CurrentRegion.Select Selection.Copy Selection.PasteSpecial特殊粘贴:= xlValues,操作:= xlNone,SkipBlanks:= _ False,移调:= False Application.CutCopyMode = False End Sub 8.注意使用空格和下划线。 “ _”表示将单行代码拆分为新行。没有此Excel会将代码视为两个单独的语句。

9.因为已经使用了经过深思熟虑的命令记录了此宏,所以几乎没有不必要的代码。在_Paste Special_中,可以删除单词“ xlValues”之后的所有内容。

10.试用宏。然后使用“自动筛选”工具并注意区别。