友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
飞读中文网 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第93章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!




                                           254 

… 页面 271…

                  变量名称,那么需要输入你想要监视的变量名称到表达式文字框里  
上下文            在该节,你应该指明包含该变量的过程名称和该过程所在的模块名称  
监视类型          明确如何监视该变量。如果你选择“监视表达式”选项按钮,那么你将在 
                  中断模式下能够在监视窗口里查看该变量的值。当你选择“当监视值为真 
                  时中断”选项按钮,那么当该变量值为真(非零)时VB将自动停止过程。 
                  最后一个选项按钮,“当监视值改变时中断”,每当该变量或表达式的值改 
                  变时,过程就会停止  

                                                        
图13…9 添加监视对话框允许你定义在VBA过程运行时监视的情况  
你可以在运行过程之前或者在过程执行中断之后添加监视表达式。  
断点和监视表达式之间的区别是断点总是将过程中断在某个特定的位置,而监视表达式则是当特定 
情况(监视值为真中断或者监视值改变时中断)时中断过程。当你不确定变量在哪儿改变时,监视 
是极其有用的。你可以简单地添加一个监视断点在某个变量上并正常运行过程,而不必在这么多行 
代码里逐语句来找到变量在那里获取该特定的值。我们来看看这是如何实现的。  
1。  准备如图13…10所示的过程  

                                                                                            
图13…10 使用监视窗口  
过程WhatDate使用For…Next循环来计算将来x天后的日期。如果你运行该过程,你不会得到任何结 
果,除非你在过程里插入下述指令:  
MsgBox “In “ & x & “ days; it will be “ & NewDate   
然而,这次,你不想一天一天地显示每一个日期。假如你想要当变量x等于160(译者:翻译时恰好 
用到160这个数,原文是211)的时候停止该程序,换句话说,你想要知道现在160天后是哪一天。 

                                          255 

… 页面 272…

要得到结果的话,你可以插入下述语句到过程里:  
If x = 160 Then MsgBox 〃In 〃 & x & 〃 days it will be 〃 & NewDate   
假设你想要不输入任何新语句来得到结果,你如何做呢?如果你添加了监视表达式的话,当满足特 
定条件时,VB就会停止For…Next循环,然后,你就可以查看想要的变量值。  
1。  选择调试…添加监视  
2。  在表达式文字框里输入下述表达式:x=160  
3。  在上下文部分,从过程下拉列表里选择WhatDate,从模块下拉列表里选择Breaks  
4。  在监视类型部分,选择“当监视值为真时中断”选项按钮  
5。  点击确定,关闭添加监视对话框,现在,你已经添加了你的第一个监视表达式  
6。  在代码窗口,将光标放在变量curDate内部的任意地方  
7。  选择调试…添加监视,并点击确定,设置缺省的监视类型  
8。  在代码窗口,将光标放在变量newDate内部的任意地方  
9。  选择调试…添加监视,并点击确定,设置缺省的监视类型  
    做完上面的步骤后,过程WhatDate包含了下述三个监视:  
     x = 160 当监视值为真时中断   
     curDate 监视表达式  
     newDate 监视表达式  
10。 将光标放在过程WhatDate代码的任意地方,并且按下F5,VB在x=160的时候停下来了(见图 
    13…10)  
    注意,变量x在监视窗口的值和你在添加监视对话框里指定的值一样。另外,监视窗口显示了 
    变量curDate和newDate的值。该过程处于中断模式。你可以按F5继续或者你可以问另一个问题: 
    277天后是哪一天?下一步将示范如何做。  
11。 选择调试…编辑监视,然后输入下述表达式:x=227。你可以通过双击监视窗口里的表达式,快 
    速显示编辑监视对话框  
12。 点击确定,关闭编辑监视对话框。注意,现在监视窗口显示表达式的新值,现在x为False。  
13。 按F5,当x值为227时过程再次停止。curDate的值相同,但是变量newDate现在有了一个新的值 
    ——现在之后277天的日期。你可以再次改变表达式的值,或者结束该过程。  
14。 按F5以完成该过程。当你的过程正在运行,并且监视表达式有值,监视窗口就会显示该监视表 
    达式的值,如果你在过程运行结束后打开监视窗口的话,那么你将看到,而不是 
    变量值了。换句话说,当监视表达式溢出上下文时,它没有值。  

7。清除监视表达式  

在监视窗口里,点击你要清除的表达式并且按下Delete。清除你先前定义的所有监视表达式。  

8。使用快速监视  

如果你想查看一个表达式的值,但是你还没有定义监视表达式,那么你可以使用快速监视(见图 
13…11)  

                                                               
图13…11 快速监视对话框显示VBA过程里所选表达式的值  
可以通过下述方法获取快速监视对话框:  
…   在中断模式下,将光标放在你要监视的变量名称或者表达式内部  
…  选择调试|快速监视,或者按下Shift+F9  
快速监视对话框上面有个添加按钮,允许你在监视窗口里添加表达式。  
确保过程WhatDate里不含有任何监视表达式,参见前面的章节有关如何从监视窗口清除监视表达式 
的内容。现在我们通过例子来看看如何利用快速监视。  
1。  在过程WhatDate里,将插入点(光标)放在变量x处  

                                          256 

… 页面 273…

2。  选择调试|添加监视  
3。  输入下述表达式:  
    x = 50  
4。  选择当监视值为真时中断,并点击确定  
5。  运行过程WhatDate  
    当x等于50时VB将中断过程的执行,注意,监视窗口里没有变量newDate和curDate。想要查看 
    这些变量的值的话,那么你可以将光标放在代码窗口里相应变量名称上,或者,你也可以调用 
    快速监视窗口。  
6。  在代码窗口里,将鼠标光标放在变量newDate上并且按下Shift+F9。快速监视窗口就会显示该 
    表达式名称和其当前值  
7。  点击取消返回代码窗口  
8。  在代码窗口,将鼠标光标放在变量curDate上并且按下Shift+F9。现在,快速监视窗口就会显 
    示变量curDate的值了  
9。  点击取消返回代码窗口  
10。 按下F5继续运行该过程  

9。使用本地窗口和调用堆栈对话框  

如果在VBA过程的执行过程中,你想密切注视所有声明的变量和它们的当前值,那么确保你在运行 
该过程前选择视图|本地窗口。当在中断模式下时,VB就会显示一系列的变量和它们相应的数值在 
本地窗口里(参见图13…12)  

                                                                                 
图13…12 本地窗口显示当前VBA过程里所有声明的变量和它们当前值  
本地窗口包含三列,表达式列显示声明在当前过程里的变量名称。第一行显示前面带加号的模块名 
称,当你点击该加号,你就可以查看是否有变量声明在模块级。类模块将显示系统变量Me。在本地 
窗口,全局变量和被其它工程使用的变量不会显示出来。  
第二列显示变量的当前值,在本列,你可以更改变量的值,只要点击它并输入新的值。更改了数值 
后,按下回车键以记录该变化。你也可以在更改数值后,按Tab键,Shift+Tab键或者向上或向下箭 
头,或者也可以点击本地窗口的其它任意地方。第三列显示每个声明了的变量的类型。  
想要观察本地窗口里的变量值的话,请跟着做:  
1。  选择视图|本地窗口  
2。  点击过程WhatDate里的任意地方,并按F8,你将过程置于中断过程了。本地窗口显示了当前模 
    块的名称,以及当地变量和它们的初始值  
3。  按几下F8键,密切关注本地窗口  
4。  按F5键继续运行该过程  
本地窗口也包含一个带三个点的按钮,该按钮将打开调用堆栈对话框(参见图13…13),它显示所有 

                                          257 

… 页面 274…

活动调用过程的清单。活动的调用过程是指已经开始但是还没有完成的过程。你也可以通过选择视 
图|调用堆栈,该选项只有在中断模式下才是可用的。  

                                                                                    
图13…13 调用堆栈对话框显示了开始但未完成的过程列表  
调用堆栈对话框特别是在追踪嵌套的程序时有用。回想一下,嵌套过程是一个被另一个过程调用的 
过程。如果一个过程调用另一个过程,该被调用的过程名称就会自动添加到调用堆栈对话框里的调 
用列表。当VB执行完该被调过程后,该过程名称就会从调用堆栈对话框里自动清除。你可以使用调 
用堆栈对话框上的显示按钮,显示调用下一个过程的语句。  

10。逐句运行 VBA 过程  

逐句运行代码意思是每次只运行一条语句,这样,可以允许你检查遇到的每一个过程里的每一条语 
句。想要从头开始逐句运行过程的话,可以将插入点置于过程代码的任意地方,并且选择调试|逐 
语句,或者按下F8。调试菜单包含好几个选项供你在逐步模式下执行(参见图13…14)  

                         
返回目录 上一页 下一页 回到顶部 1 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!