codecamp

在VB过程里使用常量的方法

当你的程序运行,变量的内容是可以变化的,如果你想要一次又一次地引用不变的值,那么你应该使用常量。常量就像一个指定的变量一样,总是引用这个相同的值。VB要求你在使用前要声明常量。正如下述例子,使用Const语句来声明常量:


Const dialogName = "Enter Data" As String


Const slsTax = 8.5


Const ColorIdx = 3


常量,像变量一样拥有范围。要让常量仅在一个过程里可用,将它声明为过程级别即可,例如:


Sub WedAnniv( )


        Const Age As Integer = 25


        

<place procedure instructions here>


End Sub


如果你想要某个常量在一个模块的所有过程中都可用,则在Const语句前加上关键字Private就可以了

(写在所有过程之上),例如:


Private Const dsk = "B:" As String


私有常量必须在模块的上面,第一个Sub语句之上声明。如果你要创建一个该工作簿所有模块都可用的常量时,在Const语句之前加上Public关键字就可以了,例如:


Public Const NumOfChar = 255 As Integer


公共常量必须在模块的上面,第一个Sub语句之上声明。声明常量的时候,你可以使用下列数据类型之一Boolean,Byte,Integer,Long,Currency,Single,Double,Date,String或者Variant。


像变量一样,多个常量也可以在一行里声明,例如:


Const Age As Integer = 25, City As String = "Denver", PayCheck As Currency = 350


使用常量可以使你的VBA过程可读性强,容易维护。例如,你在程序里多次引用某个特定值,就可以使用常量,而不是这个值本身。这样,如果以后这个值变了(例如销售税率上升了),你只要简单地在Const语句里改变这个常量的声明就可以了,而不必追踪该值所有发生的地方。


内置常量

Excel和VBA都有一长列的预先定义的常量,并且不需要声明,这些内置常量可以通过对象浏览器查找,我们已经在第二章里详细讨论了对象浏览器。我们来打开对象浏览器并查找Excel常量清单:

1.  在VB编辑器窗口,选择“视图”-“对象浏览器”
2.  在“工程/库”下拉列表里选择Excel
3.  在搜索文本框里输入“Constants”并回车,VB显示搜索结果在“搜索结果”区域
4.  在“类”列表框拉下滚动条,选择“Constants”(参见图3-3)。对象浏览器右边区域显示所有Excel对象库里可用的内置常量。注意,所有常量的名称以前缀“xl”开头。

查找内置常量
图3-3 使用对象浏览器查找内置常量

5.  要查找VBA常量,在工程/库文本框里输入VBA。注意,所有VBA的内置常量以前缀“vb”开头.学习内置常量的最好方法是使用宏录制器,我们来花上几分钟来录制最小化当前窗口的过程:

1.  在Excel窗口,选择“工具”-“宏”—“录制新宏”
2.  输入MiniWindow作为宏名,选择“当前工作簿”作为保存宏的地方,然后确定
3.  点击最小化按钮,确保你最小化了本文件的窗口,而不是Excel应用程序窗口
4.  点击“停止录制”按钮
5.
最大化该被最小化了的窗口
6.
切换到VB编辑器窗口,并且双击模块文件夹。代码显示如下:

Sub MiniWindow( )
             ActiveWindow.WindowState = xlMinimized
End Sub

你有时可能会看到VBA过程使用数值,而不是内置常量名称,例如,常量xlMaximized的实际数值是-4137,常量xlMinimized的值是-4140,以及常量xlNormal的值为-4143(参见图3-4)

对象浏览器
图3-4 你可以在对象浏览器里面选择常量名称然后在下面的窗口里看到它的实际值

接下来······

本章介绍了几个VBA概念,包括数据类型,变量和常量。你学习了如何声明各种变量,也看到变量和常量之间的区别。既然你知道什么是变量,也知道如何使用它们,你就可以创建使用比前两章更有意义的方法操作数据的过程了。在下一章中,你将通过使用带有自变量和函数的过程来扩展你的VBA知识,另外,你还将学习函数,让你的VBA过程与用户进行交流。


VBA声明和使用对象变量
VBA函数过程
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }