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 用对象浏览器来定位过程
除了定位对象,属性和方法外,对象浏览器还