VBA宏编程操作指南
更新时间:2023-05-14 06:33:01 阅读量: 实用文档 文档下载
VBA宏编程操作指南
修订记录版本 V1.0 日期 2011-3-17 作者 jingpengtao 说明 VBA基础教程,不用自己写代码,不 用看懂代码也可以写出适合自己工作 的宏。
目录1.1 1.2 1.3 1.4 1.5 1.6 1.7 第一部分:关键代码解释 ......................................................................................... 3 第二部分:如何录制宏 ............................................................................................. 9 第三部分:实例解释如果编写宏 ........................................................................... 10 第四部分:如何确定在哪个位置插入关键代码呢? ........................................... 20 第五部分:如何调试宏 ........................................................................................... 20 第六部分:分块合成 VBA 代码............................................................................... 22 第七部分:个人心得 ............................................................................................... 25
1 / 25
VBA宏编程操作指南
序:EXCEL 在我们平时的生活工作中有着广泛和重要的应用,尤其是对于每天和大量数 据打交道的人员更重要,但同时对大量数据的操作又显得是那么的繁琐,一不小心就很 容易出错,对于每天都需要用 EXCEL 做同样事情的人来说,要是能够有一种工具来自动 做工作就好了。 EXCEL 宏就是一个解决此类问题的办法,编写好一个实用的 EXCEL 宏可以大幅度提 高工作效率和质量,因此掌握宏编程显得尤为重要。 但是并不是每个人都学过编程,都了解 VBA 语言,那么怎样才能快速学习和掌握 应用宏呢? 下面我就根据我个人的学习经验及理解来教大家如何学习 VBA 编程。 不需要理解代码的含义,不需要知道哪一步操作是什么代码,只要你会复制粘贴, 就能够写出 EXCEL 宏,提高你的工作效率。 俗话说: “授之以鱼,不如授之以渔” ,所以替人写宏不如教给他方法,也方便各自 修改。 学完本教程,写一些简单的宏肯定可以。编写本教程的目的就是为了方便经常和数 据打交道的同事朋友,能够各自根据需要编写自己的宏。
备注:由于本教程 V1、0 版本只是针对从未接触过 VBA 语言及刚入门的人员编写 的,并未涉及更详细的代码分析及条件语句,循环语句,数据语句等,将会在后期的 版本更新中不断完善。
由于编者水平经验有限,难免会有一些不足之处,还望多多包涵。
2 / 25
VBA宏编程操作指南
第一部分: 1.1 第一部分:关键代码解释1、 Dim str As String str = ThisWorkbook.Path & "\***.xls" Workbooks.Open str 代码解释:自动打开文件名为“***” ,属性为 xls 的文件。同时 xlsx,csv 文件也可打开。 实际应用: 如果你的宏执行需要很多文件, 那么就可以再一开始就先执行
打开每个文件, 如: Dim str As String str = ThisWorkbook.Path & "\日常数据模板.xls" Workbooks.Open str str = ThisWorkbook.Path & "\临时表.xls" Workbooks.Open str str = ThisWorkbook.Path & "\扰码分布表.xls" Workbooks.Open str
2、 Windows("***.xls").Activate Workbooks("***.xls").Close SaveChanges:=False 代码解释:关闭文件名为“***” ,属性为 xls 的文件等。 其中 SaveChanges:=False 意为不保存直接关闭该文件,如果 SaveChanges:=True,则表示 保存之后再关闭该文件。 实际应用:在执行完所有的代码之后关闭各个已打开的文件,对于需要保存数据的 SaveChanges:=True 即可,对于不需要保存数据的 SaveChanges:=False。 如: Windows("日常数据模板.xls").Activate Workbooks("日常数据模板.xls").Close SaveChanges:=False Windows("扰码分布表.xls").Activate Workbooks("扰码分布表.xls").Close SaveChanges:=True Windows("临时表.xls").Activate Workbooks("临时表.xls").Close SaveChanges:=False
3 / 25
VBA宏编程操作指南
3、 i = 1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select ActiveSheet.Paste 代码解释: 此段语句主要是对单元格进行判断, 是否为空白, 如果为空白, 则执行粘贴。 具体解释请看下图:
假如你要把 N 个不同 EXCEL 的内容粘贴到一个新的 EXCEL 里,也就是汇总所有的数据。 假如第一个 EXCEL 内容有 13 行,第二个 EXCEL 内容有 18 行,第三个 EXCEL 内容有 20 行,等等。 也许你会说直接定位到单元格不行吗? 当然,对于每天固定行数的 EXCEL,是可以的,但是如果每天的数据都在变,今天第一 个 EXCEL 有 17 行, 第二天又变为 10 行, 第二个 EXCEL 今天有 20 行, 第二天变为 25 行, 这样你就没法使用固定的单元格定位粘贴数据了。 因此就需要上面的代码。 语句类型为 While……Wend…… While (Cells(i, 1) <> "") Cells(i, 1)当 i=1,表示 A1 单元格,也就是当 A1 单元格不为空白 的时候,执行 i = i + 1,也就是接着判断 A2 是不是空白,依次类推…… 当执行到 Ai 为空白时(如上图则表示执行到 A14) ,执行 Cells(i, 1).Select ActiveSheet.Paste,也就是选中 A14 单元格,进行粘贴。这样通过判断空白的方法就不 会因为行数的变动而产生影响了。 注意:上面我们说的只是根据 Cells(i, 1)判断,同样,也可以根据 Cells(i, 2)第二列判断, Cells(i, 3)第三列判断等,这样就可以避免因为前面几列的空白列而导致后面列的判断出 现问题。
4 / 25
VBA宏编程操作指南
4、 i = 1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete 代码解释:此段语句主要是对单元格进行判断,是否为空白,如果为空白,则执行该单 元格以下所有数据的清除。具体解释请看下图:
此代码的和 3 部分的代码有相似之处,不同的
地方时当判断 Cells(i, 1)为空时,下一 步的执行不一样。 Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete 此语句执行之后如下:
也就是当 Cells(i, 1)为空时(本图表示 A13 为空时) ,从 A13 开始清除 A13 往右以及 5 / 25
VBA宏编程操作指南
往下所有的数据。 此语句主要用途:修正自动填充导致的数据超出计划。 Range("A2").Select Selection.AutoFill Destination:=Range("A2:A10")
假如你有 A1-A12 小区 CI 需要关联小区扰码,当你在 B2 单元格通过 VLOOKUP 关联 数据时,你肯定需要让 B2 自动填充到 B12。但是如果你每天都需要关联数据,而每次 数据都会变化,即今天要关联 A1-A12,明天是 A1-A20,这样就需要自动填充到 A20, 但是 EXCEL 不是智能的,你第一次设定的自动填充到 A12,当然不会变了,这样就有可 能导致数据不全。 为了解决这个问题,你可以让 EXCEL 自动填充到第 1000 行,然后把多余的删掉就 可以了(也就是把 20 行以后自动填充的数据自动删除) 。 如图所示:从 B21 开始出现#N/A,这些数据没用的,使用 i=1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete 执行之后,B21 往下的#N/A 都会清空的。
6 / 25
VBA宏编程操作指南
5、Application.DisplayAlerts = False 代码解释:在宏的执行过程中出现的告警框不显示。 一般情况下,如果你执行宏,执行最后会出现如下截图,如果在代码的最前端加上 一句 Application.DisplayAlerts = False,那么就不会显示这些提示信息了。
例如上图表示你再录制的过程中需要进行分列,我们知道在执行分列之后,会弹出上面 的对话框要求选择,如果在代码的开始不增加 Application.DisplayAlerts = False,则在执 行的过程中会弹出对话框让我们选择,点击确定之后才会继续执行。
6、
MsgBox "清除成功!" Exit Sub Err1: MsgBox "清除失败!" 7 / 25
VBA宏编程操作指南
主要是 MsgBox 代码的应用,大家可以参考网上的一些资料,一般改代码都放在最 后,会出现如下的运行界面,主要用于提示信息。
7、 ActiveSheet.Range("$A$1:$AN$295").AutoFilter Field:=12, Criteria1:="10104" ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 Columns("N:N").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.ScrollRow = 126 ActiveWindow.ScrollRow = 501 ActiveWindow.ScrollRow = 1125 ActiveWindow.ScrollRow = 1625 ActiveWindow.ScrollRow = 2250 ActiveWindow.ScrollRow = 2375 ActiveWindow.ScrollRow = 2625 A
ctiveWindow.ScrollRow = 2750 ActiveWindow.ScrollRow = 2875 ActiveWindow.ScrollRow = 3000 ActiveWindow.ScrollRow = 3125 8 / 25
VBA宏编程操作指南
ActiveWindow.ScrollRow = 3249 ActiveWindow.ScrollRow = 3374 ActiveWindow.ScrollRow = 3499 ActiveWindow.ScrollRow = 3624 ActiveWindow.ScrollRow = 3749 ActiveWindow.ScrollRow = 3999 类似于 ActiveWindow.ScrollColumn,ActiveWindow.ScrollRow,等等都是一些无 用的代码,产生这些代码的原因就是因为我们拖拽鼠标,滑动鼠标的滑轮造成的, 这些代码就是需要我们删除的,删除之后并不影响代码的运行,也同时使我们的代 码变的精简美观。
第二部分: 1.2 第二部分:如何录制宏1、 如何录制宏。 首先打开 EXCEL2007,点到“开发工具”那一栏, (注意:有的人打开之后发 现没有开发工具那一栏, 原因可能是因为从没用过宏, 没有开启其功能, 需要在 “信 任中心”下的宏设置里面设置为“启用所有宏”即可)
2、 开始录制宏 9 / 25
VBA宏编程操作指南
点击录制宏,如下图所示,出现一个对话框,输入宏的名字,点击确定即可。
之后“录制宏”会变成“停止录用” ,表示已经在录制过程中,在这个过程中你所 进行有关 EXCEL 的操作都会被以代码的形式记录下来。
第三部分: 1.3 第三部分:实例解释如果编写宏在你创建一个宏命令之前,花几分钟来考虑你究竟想做什么。因为宏命令是一大堆 键盘输入的集合,事先计划你的行动非常重要。最早的计划宏命令的方法是手动地将宏 命令需要做的事情做一遍。在你做键盘输入的同时,在一张纸上记录下他们实际发生的 情况,不要漏掉任何东西。象录音机一样,Excel 可以将你的所有动作录制下来(事实 上并非如此,有些操作是无法录制的) 。如果在录制宏之前,你没有很好地计划,你会 录制很多不必要的步骤,而这些都会影响运行速度。尽管修改宏代码比去除录制宏里面 不必要的步骤容易, 但是, 仅仅录制必要的步骤会节省你修改代码的时间和以后的麻烦。 编写宏最简单的方法:复制粘贴删多余,补头补尾补关键。
实例一: 实例一:10 / 25
VBA宏编程操作指南
TD 扰码规划工具的编写,看起来不复杂。 最主要的就是要 经纬度转换距离 这个工具,当然这也是一个宏,我们不需要了解它, 只要知道它的功能是转换距离就行了。
我们需要把宏所有需要的 EXCEL 文件放在同一个文件夹里。 下面是我按照我的规划思路通过 EXCEL 宏录制出来最原始的代码: 第一步: 第一步:进行扰码分组 Sub 进行扰码分组() ' ' Macro1 Macro Columns("N:N").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("N2").Select ActiveCell.FormulaR1C1 = "=INT(RC[-1]/4+1)" Range("N2").Select Selection.AutoFill Destination:=Range("N2:N79") Range("N
2:N79").Select Columns("N:N").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Rows("1:1").Select Application.CutCopyMode = False Selection.AutoFilter ActiveWorkbook.Worksheets("原始表").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("原始表").AutoFilter.Sort.SortFields.Add Key:=Range _ ("N1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort .Header = xlYes .MatchCase = False 11 / 25
VBA宏编程操作指南
.Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.AutoFilter End Sub 以上代码是我最开始录制的代码,我们需要对其进行修改。 其实修改代码很简单, 只要找对位置复制粘贴就可以了。 Application.DisplayAlerts 如 = False 代码,不管什么宏,只要把这句话加在代码的最前面就可以了。 红 色 标 注 的 Range("N2:N1000") , 注 意 看 是 从 Range("N2:N79") 改 为 Range("N2:N1000"),为什么要改为 1000 呢? 这是因为我们在录制宏的时候,采用的数据只有 79 行,而我们知道每次规划的原 始数据行数肯定会变化,有可能两百多行,为了防止数据不完全,我们就需要设置 一个范围,根据自己的理解去设置。 由上可知,我们设置为最大 1000 行,但是实际上的数据肯定是小于 1000 行的,这 样我们就需要把多余的行数删掉,就需要在代码后面加上下面这段代码,这样就能 够达到我们想要的效果了。 i=1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete
下面是修改之后的代码。 Sub 进行扰码分组() ' ' Macro1 Macro Application.DisplayAlerts = False Columns("N:N").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range("N2").Select ActiveCell.FormulaR1C1 = "=INT(RC[-1]/4+1)" Range("N2").Select Selection.AutoFill Destination:=Range("N2:N1000") i=1 12 / 25
VBA宏编程操作指南
While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown)).Select Selection.EntireRow.Delete Range("N2:N1000").Select Columns("N:N").Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Rows("1:1").Select Application.CutCopyMode = False Selection.AutoFilter ActiveWorkbook.Worksheets("原始表").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("原始表").AutoFilter.Sort.SortFields.Add Key:=Range _ ("N1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("原始表").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.AutoFilter
End Sub 经过我们的稍微修改,复制粘贴几个关键代码,一个完整的宏代码就产生了,是不 是觉得很容易
呢?本来也不难的。
第二步: 第二步:经纬度转换距离 Sub 经纬度换算距离() ' ' Macro3 Macro ' Range("F2:G2").Select 13 / 25
VBA宏编程操作指南
Range(Selection, Selection.End(xlDown)).Select Selection.Copy Windows("经纬度算距离.xls").Activate Range("A2").Select ActiveSheet.Paste Windows("TD 扰码规划宏.xls").Activate Range("F1:G1").Select Application.CutCopyMode = False Selection.Copy Windows("经纬度算距离.xls").Activate Range("C2").Select ActiveSheet.Paste Range("C2").Select Application.CutCopyMode = False Selection.AutoFill Destination:=Range("C2:C79") Range("D2").Select Selection.AutoFill Destination:=Range("D2:D79") Range("E2").Select Selection.AutoFill Destination:=Range("E2:E79")
Columns("E:E").Select Selection.Copy Columns("G:G").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("G2").Select Range(Selection, Selection.End(xlDown)).Select Windows("TD 扰码规划宏.xls").Activate Columns("O:O").Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Windows("经纬度算距离.xls").Activate Columns("G:G").Select Selection.Copy Windows("TD 扰码规划宏.xls").Activate ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False ActiveWorkbook.Save End Sub 以上是刚开始录制的宏代码,同样需要修改。 14 / 25
VBA宏编程操作指南
按照一开始介绍的方法修改代码:补头,补尾,补关键。 Sub 经纬度换算距离() ' ' Macro3 Macro ' Application.DisplayAlerts = False Dim str As String str = ThisWorkbook.Path & "\经纬度算距离.xls" Workbooks.Open str (上面黄色的部分就是“补头” ) Windows("TD 扰码规划宏.xls").Activate Range("F2:G2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Windows("经纬度算距离.xls").Activate Range("A2").Select ActiveSheet.Paste Windows("TD 扰码规划宏.xls").Activate Range("F1:G1").Select Application.CutCopyMode = False Selection.Copy Windows("经纬度算距离.xls").Activate Range("C2").Select ActiveSheet.Paste Range("C2").Select Application.CutCopyMode = False Selection.AutoFill Destination:=Range("C2:C1000") Range("C2:C142").Select Range("D2").Select Selection.AutoFill Destination:=Range("D2:D1000") Range("D2:D142").Select Range("E2").Select Selection.AutoFill Destination:=Range("E2:E1000") i=1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown)).Select 15 / 25
VBA宏编程操作指南
Selection.EntireRow.Delete (上面黄色和红色的部分就是“补关键” ) Columns("E:E").Select Selection.Copy Columns("G:G").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("G2").Select Range(Selection, Selection.End(xlDown)).Select Windows("TD 扰码规划宏.xls").Activate Columns("O:O").Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Windows("经
纬度算距离.xls").Activate Columns("G:G").Select Selection.Copy Windows("TD 扰码规划宏.xls").Activate ActiveSheet.Paste Range("A1").Select Application.CutCopyMode = False ActiveWorkbook.Save Windows("经纬度算距离.xls").Activate Workbooks("经纬度算距离.xls").Close SaveChanges:=False (上面黄色的部分就是“补尾” ) End Sub 又是一个只要复制粘贴就可以补全代码的例子,找准位置,写起来很容易的。
下面再贴几个代码来更好的说明下: 日常数据制作宏是一个很典型的例子,能够很好的表现出来宏代码的初级应 用。 就拿日常数据制作宏(我只取其中 4 个 RNC 作为例子)来说:我们不需要看所 有的代码,只要找到关键部分,然后复制粘贴就可以了。 Sub Macro2() ' ' Macro2 Macro ' Dim str As String str = ThisWorkbook.Path & "\日常数据模板.xls" 16 / 25
VBA宏编程操作指南
Workbooks.Open str str = ThisWorkbook.Path & "\RNC1.xls" Workbooks.Open str str = ThisWorkbook.Path & "\RNC2.xls" Workbooks.Open str str = ThisWorkbook.Path & "\RNC3.xls" Workbooks.Open str str = ThisWorkbook.Path & "\RNC4.xls" Workbooks.Open str (上面标黄色的代码也就是我们一开始就列举的关键代码, 也就是我们宏 所需要的 EXCEL 文件,宏在执行之前需要先打开这些文件,因为在录制宏的时候这 些代码是不能被录制的,所以需要我们手动加上去。 ) '复制 RNC1 的小区参数信息 Windows("RNC1.xls").Activate Sheets("小区归属配置信息表").Select Range("B1", "B2").Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy Windows("日常数据模板.xls").Activate Sheets("小区参数信息").Select Range("A1").Select ActiveSheet.Paste Windows("RNC1.xls").Activate Sheets("小区归属配置信息表").Select Range("B5").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Windows("日常数据模板.xls").Activate Sheets("小区参数信息").Select i=1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select ActiveSheet.Paste (上面的黄色代码就是进行空格判断之后,然后再进行粘贴的,就是针对每天 都变化的数据而采用的代码。 ) '复制 RNC2 的小区参数信息 Windows("RNC2.xls").Activate Sheets("小区归属配置信息表").Select Range("B1", "B2").Select 17 / 25
VBA宏编程操作指南
Range(Selection, Selection.End(xlToRight)).Select Selection.Copy Windows("日常数据模板.xls").Activate Sheets("小区参数信息").Select Range("A1").Select ActiveSheet.Paste Windows("RNC2.xls").Activate Sheets("小区归属配置信息表").Select Range("B5").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Windows("日常数据模板.xls").Activate Sheets("小区参数信息").Select i=1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select ActiveSheet.Paste
'复制 RNC3 的小区参数信息 Windows("RNC3.xls").
Activate Sheets("小区归属配置信息表").Select Range("B1", "B2").Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy Windows("日常数据模板.xls").Activate Sheets("小区参数信息").Select Range("A1").Select ActiveSheet.Paste Windows("RNC3.xls").Activate Sheets("小区归属配置信息表").Select Range("B5").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Windows("日常数据模板.xls").Activate Sheets("小区参数信息").Select i=1 While (Cells(i, 1) <> "") i=i+1 18 / 25
VBA宏编程操作指南
Wend Cells(i, 1).Select ActiveSheet.Paste
'复制 RNC4 的小区参数信息 Windows("RNC4.xls").Activate Sheets("小区归属配置信息表").Select Range("B1", "B2").Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy Windows("日常数据模板.xls").Activate Sheets("小区参数信息").Select Range("A1").Select ActiveSheet.Paste Windows("RNC4.xls").Activate Sheets("小区归属配置信息表").Select Range("B5").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Windows("日常数据模板.xls").Activate Sheets("小区参数信息").Select i=1 While (Cells(i, 1) <> "") i=i+1 Wend Cells(i, 1).Select ActiveSheet.Paste
Windows("RNC1.xls").Activate Workbooks("RNC1.xls").Close SaveChanges:=False 'Windows("RNC2.xls").Activate 'Workbooks("RNC2.xls").Close SaveChanges:=False 'Windows("RNC3.xls").Activate 'Workbooks("RNC3.xls").Close SaveChanges:=False Windows("RNC4.xls").Activate Workbooks("RNC4.xls").Close SaveChanges:=False (上面标黄色的代码就是我们刚开始说的关闭文件的代码,同样,宏录制 的时候也不能把关闭文件的操作录制下来,也需要我们手动添加。 )
19 / 25
VBA宏编程操作指南
MsgBox "汇总成功!" Exit Sub Err1: MsgBox "汇总失败!" (上面几行就是 MsgBox 函数, 前面已做介绍, 我们知道其基本用法就可以了) End Sub
第四部分:如何确定在哪个位置插入关键代码呢? 1.4 第四部分:如何确定在哪个位置插入关键代码呢?我们可以在调试的时候采用逐句运行语句,每运行一条语句就看一下实际的效果,找到 需要添加代码的位置,这样就可以根据自己的需要找到关键语句。
第五部分 部分: 1.5 第五部分:如何调试宏上面介绍的程序大多数都很短,所以找错误并不是非常困难。然而,当你编写更长 更复杂的过程时,查找错误源就更缓慢和费时了。幸运的是,VBA 编辑器提供了一套方 便的工具,让你追踪你 VBA 问题的过程更简单,更快捷,有更少的挫折。程序缺陷是 电脑程序中的错误,而调试则是定位和解决这些错误的过程。调试让你找到你的程序为 什么不按预期工作的原因。你可以通过步入程序代码或者检查变量值来达到目的。 使用下述指南进行你的 VBA 程序调
试: 如果你想要分析你的过程,通过按 F8 或者选择调试-逐语句,逐语句地执行你的代 码 如果你怀疑程序的某个地方有错误发生,那么可以使用断点 如果你想监测程序中某个变量或者表达式的值,那么可以添加一个监视表达式 如果你讨厌在冗长的程序代码中拉动滚动条到你感兴趣的部分去,那么你可以设置 一个书签,快速跳到需要的地方。
那么如何终止VB过程吗?如果你想到了按Esc键, 那么你对了。 如果你在运行程序, 并且突然按下Esc键,那么VB就会中断程序的运行,并显示如图13-1显示的信息。然而 除了Esc键,这个在很多情况下都很有力而且可靠的方法,VBA还提供了很多其它的方 法来中断你的过程,进入所谓的中断模式: 按Ctrl+Break 设置一个或多个断点 插入Stop语句 添加监视表达式 当你的程序执行被临时停止时,断点便发生了。VB会从过程的执行中记住所有变量和 语句的值,当用户从工具栏点击运行宏(或者“运行”菜单上的相同名称) ,或者点击 对话框(图13-1)上面的继续按钮,可以恢复。
20 / 25
VBA宏编程操作指南
下面通过图解来说明如何调试宏
如图所示,我们进入“开发工具” ,找到我们需要调试的宏名称,如“执行扰码分组” , 然后点击“单步执行” ,会进入到如下界面,黄色标注的代码就是下一步准备执行的代 码。 我们可以按“F8”来进行每一步的调试。
21 / 25
正在阅读:
VBA宏编程操作指南05-14
第二章 首饰设计07-18
合工大2015计算机专硕研究培养资料05-23
情场不输人,职场不输阵读后感10篇12-12
遥感图像处理实验docx01-07
【精品】毕业设计-C650卧式车床的控制系统的PLC控制改造05-29
首都师范大学2010年招收攻读博士学位研究生专业目录 - 图文12-05
毕节职卫台帐(空表)04-15
培养学生的学习兴趣,激发学生的求知欲11-24
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 操作指南
- 编程
- VBA
- 加强会计职业道德建设的思考
- 2015年高考历史二轮专题复习训练:选修3 20世纪的战争与和平
- 初二数学第六讲一元二次方程与解法(一)(教案)
- 广铁集团重大建设项目竣工文件编制归档培训
- 热轧与酸洗的区别
- 天下东林讲学书院&39;考述
- 司法考试公司法考点汇总
- 大学生学习军事课的意义
- 污泥处理处置可行性分析20141811
- 软件工程基本概念、工具与研究热点
- 教学设计:昆虫记阅读指导教案
- 加气混凝土砌块操作规程
- 细胞分化_细胞的衰老、凋亡和癌变_复习学案
- 人教版历史九年级上册期末测试题
- 检验作业指导书--1.8
- 八年级物理功和机械能单元检测卷
- 《白公鹅》教学设计
- 中国石油大学(北京)红楼梦研究第二次在线作业
- 八年级上册地理知识点总结
- 百家装饰金地檀溪新古典风格设计赏析