VBA宏编程速成宝典.docx_第1页
VBA宏编程速成宝典.docx_第2页
VBA宏编程速成宝典.docx_第3页
VBA宏编程速成宝典.docx_第4页
VBA宏编程速成宝典.docx_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VBA宏编程速成宝典1.1 第一部分:关键代码解释. 3 1.2 第二部分:如何录制宏 . 9 1.3 第三部分:实例解释如果编写宏 . 10 1.4 第四部分:如何确定在哪个位置插入关键代码呢, . 20 1.5 第五部分:如何调试宏 . 20 1.6 第六部分:分块合成VBA代码 . 22 1.7 第七部分:个人心得 . 25 1 / 25 序: EXCEL在我们平时的生活工作中有着广泛和重要的应用,尤其是对于每天和大量数据打交道的人员更重要,但同时对大量数据的操作又显得是那么的繁琐,一不小心就很容易出错,对于每天都需要用EXCEL做同样事情的人来说,要是能够有一种工具来自动做工作就好了。 EXCEL宏就是一个解决此类问题的办法,编写好一个实用的EXCEL宏可以大幅度提高工作效率和质量,因此掌握宏编程显得尤为重要。 但是并不是每个人都学过编程,都了解VBA语言,那么怎样才能快速学习和掌握应用宏呢, 下面我就根据我个人的学习经验及理解来教大家如何学习VBA编程。 不需要理解代码的含义,不需要知道哪一步操作是什么代码,只要你会复制粘贴,就能够写出EXCEL宏,提高你的工作效率。 俗话说:“授之以鱼,不如授之以渔”,所以替人写宏不如教给他方法,也方便各自修改。 学完本教程,写一些简单的宏肯定可以。编写本教程的目的就是为了方便经常和数据打交道的同事朋友,能够各自根据需要编写自己的宏。 备注:由于本教程V1、0版本只是针对从未接触过VBA语言及刚入门的人员编写的,并未涉及更详细的代码分析及条件语句,循环语句,数据语句等,将会在后期的版本更新中不断完善。 由于编者水平经验有限,难免会有一些不足之处,还望多多包涵。 2 / 25 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 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行,这样你就没法使用固定的单元格定位粘贴数据了。 因此就需要上面的代码。 语句类型为WhileWend 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 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 往下所有的数据。 此语句主要用途:修正自动填充导致的数据超出计划。 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 5、Application.DisplayAlerts = False 代码解释:在宏的执行过程中出现的告警框不显示。 一般情况下,如果你执行宏,执行最后会出现如下截图,如果在代码的最前端加上一句Application.DisplayAlerts = False,那么就不会显示这些提示信息了。 例如上图表示你再录制的过程中需要进行分列,我们知道在执行分列之后,会弹出上面的对话框要求选择,如果在代码的开始不增加Application.DisplayAlerts = False,则在执行的过程中会弹出对话框让我们选择,点击确定之后才会继续执行。 6、 MsgBox 清除成功 Exit Sub Err1: MsgBox 清除失败 7 / 25 主要是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 ActiveWindow.ScrollRow = 2750 ActiveWindow.ScrollRow = 2875 ActiveWindow.ScrollRow = 3000 ActiveWindow.ScrollRow = 3125 8 / 25 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 点击录制宏,如下图所示,出现一个对话框,输入宏的名字,点击确定即可。 之后“录制宏”会变成“停止录用”,表示已经在录制过程中,在这个过程中你所进行有关EXCEL的操作都会被以代码的形式记录下来。 1.3 第三部分:实例解释如果编写宏 在你创建一个宏命令之前,花几分钟来考虑你究竟想做什么。因为宏命令是一大堆键盘输入的集合,事先计划你的行动非常重要。最早的计划宏命令的方法是手动地将宏命令需要做的事情做一遍。在你做键盘输入的同时,在一张纸上记录下他们实际发生的情况,不要漏掉任何东西。象录音机一样,Excel 可以将你的所有动作录制下来(事实上并非如此,有些操作是无法录制的)。如果在录制宏之前,你没有很好地计划,你会录制很多不必要的步骤,而这些都会影响运行速度。尽管修改宏代码比去除录制宏里面不必要的步骤容易,但是,仅仅录制必要的步骤会节省你修改代码的时间和以后的麻烦。 编写宏最简单的方法:复制粘贴删多余,补头补尾补关键。 实例一: 10 / 25 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(N2: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 .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 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 ).AutoFilter.Sort With ActiveWorkbook.Worksheets(原始表.Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.AutoFilter End Sub 经过我们的稍微修改,复制粘贴几个关键代码,一个完整的宏代码就产生了,是不是觉得很容易呢,本来也不难的。 第二步:经纬度转换距离 Sub 经纬度换算距离() Macro3 Macro Range(F2:G2).Select 13 / 25 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 按照一开始介绍的方法修改代码:补头,补尾,补关键。 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 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 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 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 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 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 下面通过图解来说明如何调试宏 如图所示,我们进入“开发工具”,找到我们需要调试的宏名称,如“执行扰码分组”,然后点击“单步执行”,会进入到如下界面,黄色标注的代码就是下一步准备执行的代码。 我们可以按“F8”来进行每一步的调试。 2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论