按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
显示工作表中有内容的区域。这两种选项都有相应的内置常数来表示。Excel常数起名总是以“xl”
开头。你一旦在代码窗口里输入指令:
ActiveWindow。View =
就会弹出一个菜单,列出这个属性的有效常数名称。使用在上节中“属性/方法列表”弹出菜单同
样的技术,也可以处理“常数列表”弹出菜单。按下Ctrl+Shift+J或者点击“编辑器”工具条上的
“常数列表”按钮,可以激活常数列表菜单。
51
… 页面 68…
图2-13 常数列表弹出菜单显示了对敲入的属性有效的常数清单
14 参数信息
如果你有过使用Excel函数的经历,你就会知道许多函数需要一个或者多个自变量(或者参数)。如
果VB函数要求自变量,你可以在输入左括号后在光标下面看到一个提示框,显示必要的或可选的自
变量的名称(参见图2-14)。参数信息帮你很容易地给VBA函数设置参数。另外,它提醒你其它两
件对函数运行正确至关重要的事情:自变量的顺序和自变量要求的数据类型。你将在下一章里学习
数据类型。
在代码窗口里面输入下述代码,看看参数信息是如何工作的:
ActiveWorkbook。SaveAs(
图2-14 A tip window displays a list of arguments utilized by a VBA function or instruction。
你一旦输入了开始的括号,光标的下面就会出现一个提示框,当前的自变量会显示为粗体;当你输
入完第一个自变量并且输入了逗号,VB会将下一个自变量为粗体。可选的自变量会用中括号' '括
起来。只要按下Esc键就可以关闭参数信息窗口。如何使用键盘来打开提示窗口?输入指令或函数,
紧接着是左括号,然后按下Ctrl+Shift+I。你也可以点击编辑菜单上的参数信息按钮或者选择“编
辑”-“参数信息”。
15 快速信息
当你选择了代码窗口里的指令,函数,方法,过程名称或者常数,然后点击编辑工具条上的“快速
信息”按钮(或者按下Ctrl+I),VB将会显示突出显示项目的语法和常数的值。快速信息可以通过
选项对话框来打开或者关闭。在编辑器页,勾选“自动显示快速信息”,打开快速信息功能。
图2-15 快速信息提供函数参数清单,也可以是常数值和VBA语句语法
16 自动完成关键字
加速在代码窗口编写VBA程序的另一种方法是使用“自动完成关键字”功能。当你输入一个关键字
的前几个字母,然后按下Ctrl+空格键,或者点击编辑工具条上的“自动完成关键字”按钮,VB会
帮你输入这个关键字的剩余字母,节约你的时间。例如,在代码窗口里输入关键字“Application”
的前四个字母,并且按下Ctrl+空格键:
Appl
52
… 页面 69…
VB将会完成剩余的字母,在Appl地方,你将看到整个关键字Application。如果有好几个关键字具
有相同的开头字母,当你按下Ctrl+空格键后,VB会显示一个弹出菜单,列出所有关键字。测试这
个例子,可以输入关键字Application的前三个字母,按工具条上的自动完成关键字按钮,然后在
弹出菜单上选取合适的关键字。
17 缩进/凸出
也许你已经看到,在选项对话框的编辑器页上有许多设置你可以打开以使用代码窗口许多可用的自
动功能。如果勾选了“自动缩进”选项,你就可以自动缩进所选的代码行,缩进的量为“Tab宽度”
文本框里的数字。默认的自动缩进量是4个字母,你也可以在文本框里输入一个新的数字来改变Tab
宽度。你为什么需要在代码里使用缩进?缩进可以使你的代码更容易阅读和理解。特别是输入一些
做决定或重复性工作的代码行时,更建议使用缩进。你将在第五和第六章中学习如何创建这种类型
的VB指令。现在,我们来练习使用缩进和凸出代码行,用第一章里的宏WhatsInACell作为例子:
1。 在工程浏览器窗口,选择FirstSteps(Chap01。xls)工程,并且激活含有WhatsInACell代码的
WorksheetFormatting模块
2。 选择开始为关键字With和结束为End With的一段代码
3。 点击编辑工具条上的缩进按钮,或者按键盘上的Tab键(译者:按Tab键需要将光标放在行首,
而非选中指令)
4。 选中的指令会向右移动4个字母的位置,如果使用了Tab宽度的默认设置。
5。 点击编辑工具条上的“凸出”按钮,或者按Shift+Tab将选中的指令行返回原来的位置。
缩进和凸出同样可以在编辑菜单里找到。
18 设置注释块/解除注释块
在第一章中,你学习了一行代码前面加一个引号表示注释。注释不但使代码更容易理解,而且它在
VBA过程的测试和处理问题中都是很有用的。例如,你执行一个过程时,它可能和期望的运行不一
致,对于那些可能产生问题的代码行,你现在想略过它们,但是以后可能还需要用到它们,你就可
以在它们前面加一个引号注释掉它们,而不必删除它们。对大多数人来说,需要注释掉一行代码的
话,只有在它前面敲入一个引号就可以了,但是,如果要注释掉整块代码,使用“编辑”工具条上
的“设置注释块”和“解除注释块”按钮则是很方便的。要注释掉几行代码,只要选中这些代码行
并且点击“设置注释块”按钮。点击“解除注释块”按钮,将注释掉的代码恢复到代码里。
如果你没有选中文本,就点击了“设置注释块”按钮,只有在光标所在的代码行前面加入引号。
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 用对象浏览器来定位过程
除了定位对象,属性和方法外,对象浏览器还是个定位在不同工