《excel_vba_编程教程(完整版)》

下载本书

添加书签

excel_vba_编程教程(完整版)- 第24节


按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
以在它们前面加一个引号注释掉它们,而不必删除它们。对大多数人来说,需要注释掉一行代码的 
话,只有在它前面敲入一个引号就可以了,但是,如果要注释掉整块代码,使用“编辑”工具条上 
的“设置注释块”和“解除注释块”按钮则是很方便的。要注释掉几行代码,只要选中这些代码行 
并且点击“设置注释块”按钮。点击“解除注释块”按钮,将注释掉的代码恢复到代码里。  
如果你没有选中文本,就点击了“设置注释块”按钮,只有在光标所在的代码行前面加入引号。  

19 使用对象浏览器  

如果你想要在VBA众多的组件和功能中自由切换,那么使用对象浏览器。这个专门的内置工具在VB 
编辑器窗口是可用的。使用下面任何一种方法都可以访问对象浏览器:  

                                           53 

… 页面 70…

                                                                                 
图2-16 对象浏览器让你在当前VBA工程里可用的所有对象,属性和方法里浏览  
对象浏览器让你浏览VBA过程中可用的对象,也可以查看它们的属性,方法和事件。在对象浏览器 
的帮助下,你可以在VBA工程的多个过程之间快速移动。  
对象浏览器分为三部分(参见图2-16)。窗口的上部显示“工程/库”下拉列表,这里列出了所有 
库名称以及当前VBA工程里可用的所有工程名称。库是包含一个应用程序里对象的信息的专门文件。 
新的库可以通过“引用”对话框(“工具”-“引用”)来添加。列出了你电脑上安装了的 
所有库中的所有对象。当你选择一个叫“Excel”的库时,仅仅能在Excel里执行的对象名称才能被 
看到。和Excel库相反,VBA库列出了所有能在VBA里执行的对象名称。  
在“工程/库”下拉列表框下面,有一个“搜索”文本框,让你可以快速地在某个库里搜索你的信 
息。这个地方会记住你最近搜索的四个项目。在对象浏览器的任何地方单击右键,在快捷菜单上选 
择“全字匹配”,你就可以只搜索匹配整个字的内容。对象浏览器上的“搜索结果”(参见图2-16 
和2-17)显示符合搜索条件的库,类和成员。当你输入搜索文本并且单击搜索按钮,VB展开对象 
浏览器对话框以显示搜索结果。你可以点击“望远镜”按钮右边的“显示/隐藏搜索结果”来显示 
或者隐藏搜索结果。  

                                           54 

… 页面 71…

                                                                 
图2-17 在对象浏览器里搜索答案  
类列表框显示所选中的库里面所有可用的对象类,如果你选择VBA工程,列表显示该工程里的对象。 
在图2-16里,mandBarboBox 对象类被选中了。当你选中一个类,右边的列表(成员)显示 
该类可用的属性,方法和事件。图2-16上显示了类mandBarboBox的一些成员。成员默认地 
按字母顺序列出。然而,你可以使用对象浏览器快捷菜单上的“组成员”来组织这些成员列表(属 
性,方法或事件)。如果你选择“工程/库”里面的VBA工程,成员列表框列出该工程里的所有过程。 
双击该过程名称,就可以进入该过程并检查其代码。如果你选择类“VBA”,你将看到VB内置的函数 
和常数。如果你对所选的类或成员需要更多的信息,可以点击对象浏览器窗口上面的问号按钮。对 
象浏览器下面的窗口显示所选成员的代码格式。如果你点击代码格式里绿色的连接部分,你将跳到 
对象浏览器窗口的所选成员的类或库。代码格式里的代码可以被复制到Windows剪切板并且粘贴到 
代码窗口里去。如果对象浏览器和代码窗口都是可见的,你只要选中代码格式里的文本,直接拖曳 
到代码窗口就行了。  
通过对象浏览器窗口上的横竖分割线,你可以轻易地改变各个窗口的大小。  
你已经发现了对象浏览器,你也许在想你如何才能让它帮助你进行VBA编程。假设你在工作表中央 
放置了一个文本框,你如何让Excel将这个文本框移动到工作表的左上方?  
1。  打开一个新工作表  
2。  选择“视图”-“工具栏”,然后点击“绘图”  
3。  点击“绘图”上的文本框,在工作表中央画一个文本框,并且随便输入什么文字  
4。  选择文本框之外的任意单元格  
5。  按下Alt+F11激活VB编辑器窗口,并且选择工程浏览器窗口的Personal (Personal。xls)  
6。  选择“插入”-“模块”,增加一个新的模块  
7。  在属性窗口,给该模块重命名:Manipulations  
8。  选择“视图”-“对象浏览器”,或按F2  
9。  在“工程/库”下拉列表框里选择“Excel”类  
10。 在搜索框里输入“textbox”并点击搜索按钮。确保你没有在文字间敲入空格。  

                                           55 

… 页面 72…

                                                                                      
图2-18 Excel 在工作表上面的名称框里显示插入的对象名称  

                                                                 
图2-19 使用对象浏览器窗口,你可以找到合适的VBA指令来编写你自己的过程  
显示的结果表明对象Shapes掌管我们文本框操作(参见图2-19)。从成员列表清单上看,你可以很 
快就知道AddTextbox方法就是用来在工作表里添加文本框的方法。代码格式窗口显示了使用该方法 
的正确语法。如果你选择AddTextbox方法并且按F1,你将看到关于它的帮助窗口,有更详细的关于 
如果使用该方法的信息(参见图2-20)  

                                           56 

… 页面 73…

                                                                                     
图2-20 要获取对象浏览器找到的任何项目详细信息,只要选择整个项目并且按F1就可以了  
当你细看AddTextbox方法的自变量和它们在帮助窗口上的解释时,你就可以很快地知道文本框在工 
作表中的位置是由Left和Top属性来决定的。你需要做的只是返回代码窗口,编写指令来移动文本 
框到工作表的左上方。  
11。 关闭对象浏览器和帮助窗口(如果它们还是打开的)  
12。 双击Manipulations模块,输入过程MoveTextBox:  
Sub MoveTextBox()   
       With ActiveSheet。Shapes(〃Text box 1〃)         ‘Text box 1在中文版本里为“文本框  
1”  
              。Select   
              。Left = 0   
              。Top = 0   
       End With   
End Sub  
13。 选择“运行”-“运行宏”来测试这个过程  
当你返回到放置该文本框的工作表时,该文本框已经移动到了工作表的左上方了。注意, 
MoveTextBox程序在Shapes集合里选择了“Text box 1”。Text box 1是工作表里第一个对象的默认 
名称。你每次增加新的对象后,Excel将给它安排新的好码(编号)。除了使用对象名称外,你还可 
以引用集合成员的编号。例如,你可以输入:  
With ActiveSheet。Shapes(1)  
来代替:  
With ActiveSheet。Shapes(〃Text box 1〃)  
我们来用VB操纵另一个对象,你自己试试。在你放置文本框的工作表里再放置一个小圆圈。使用绘 
图工具上的椭圆工具画这个圆圈。在Manipulations模块里插入一个新的过程,并且编写代码来放 
置圆圈。记住,Excel连续地编号。第一个对象的编号为1,第二个则为2,等等,不管这个对象的 
类型是文本框,椭圆或者是矩形,没有关系。  
下面的过程MoveCircle演示如何将当前工作表里的椭圆移动到左上方去:  

                                          57 

… 页面 74…

Sub MoveCircle()   
       With ActiveSheet。Shapes(2)   
               。Select   
               。Left = 0   
               。Top = 0   
       End With   
End Sub  
移动椭圆和移动文本框或者放在工作表里的其它对象类似。注意,过程中引用的是对象的编号,而 
非它的名称椭圆 2。当你运行MoveCircle时,Excel移动的是椭圆,而不是文本框了。  

20 使用 VBA 对象库  

在前面的例子里,你学习使用了Excel对象库里的Shapes(图形)集合成员的属性。Excel库包含专 
门使用Excel的对象,而VBA库则提供对许多内置VBA函数的访问,这些函数按类别分组。这些函数 
是通用的,它们使你能够管理文件,设置日期和时间,与用户交流,转换数据类型,处理文本串或 
者进行数学计算。在下面的练习中,你将学习如何使用内置的VBA函数来创建一个新文件夹,而不 
需要离开Excel界面:  
1。  回到模块Manipulations,那里有你的MoveTextBox和MoveCircle过程  
2。  输入一个新的过程:  
    Sub NewFolder()  
3。  点击回车键,VB会自动输入结束关键词End Sub  
4。  按下F2激活对象浏览器  
5。  在“工程/库”列表框里选择VBA  
6。  在搜索文本框里输入file并且回车  
7。  滚动成员列表框,并且选中MkDir方法(参见图2-21)  
8。  点击对象浏览器上的“复制”按钮,将被选择的方法名称复制到剪贴板  

                                                                    
图2-21 编写过程时,向对象浏览器寻求帮助来找内置的VBA函数  
9。  返回Manipulations窗口,并且将复制的指令粘贴到NewFolder过程  
10。 输入一个空格,接着是”C:Study”。确保你在引号里输入了整个路径名。NewFolder过程为:  
    Sub NewFolder()  
       MkDir 〃C:Study〃   

                                             58 

… 页面 75…

     End Sub  
11。 运行过程NewFolder  
当你运行NewFolder过程,VB在C盘上创建了一个新的文件夹。激活Windows浏览器可以查看该新文 
件夹。创建一个新的文件夹后,你可能会发现你根本就不需要它,虽然你可以轻易地从Windows浏 
览器里删除该文件夹,但是,如何从编程上去掉它呢?对象浏览器上列出了许多对文件夹和文件操 
作很有帮助的其它方法。RmDir方法正如MkDir 方法一样使用简单。想要删除你硬盘上的“Study” 
文件夹,只要将MkDir方法换成RmDir方法然后重新运行NewFolder过程就可以了。或者,你也可以 
创建一个新的过程RemoveFolder,如下:  
        Sub RemoveFolder()   
                RmDir 〃C:Study〃   
        End Sub  
RmDir方法允许你从硬盘上删除不需要的文件夹。  

21 用对象浏览器来定位过程  

除了定位对象,属性和方法外,对象浏览器还
小提示:按 回车 [Enter] 键 返回书目,按 ← 键 返回上一页, 按 → 键 进入下一页。 赞一下 添加书签加入书架