codecamp

如何明确VBA变量的数据类型

如果你在Dim语句里没有明确变量的数据类型,你最终将得到没有归类的变量。没有归类的包括,在VBA里,总是当成Variant数据类型。高度建议你产生归类了的变量。当你声明变量为某种数据类型,你的VBA程序会运行得更快一些,因为VB不需要停下来分析Variant变量到底是什么类型。


VB可以使用很多种数字变量。Integer变量只能保存从–32,768到32,767之间的所有整数。其它类型的数字变量有Long,Single,Double和Currency。Long变量可以保存从–2,147,483,648到2,147,483,647范围的所有整数。与Integer和Long相反,Single和Double变量可以保存小数。String变量用来引用文本。当你声明了一个String数据类型的变量时,你最好告诉VB这个字符串有多长,例如:


Dim extension As String * 3


声明变量extension字符串的长度为3个字符。如果你不给它分配一个明确的长度,这个字符串变量将是动态的。这意味着VB将会占用足够大的电脑内存来处理任意容量的文本。声明了变量后,你只能保存声明语句里显示的信息类型。给数字类型的变量赋文本值,或给文本类型变量赋数字值,都会导致“类型不匹配”的错误信息,或者导致VB修正该值。例如,如果你的变量声明为保存整数,而你的数据是小数, 那么VB会忽略小数部分而只用数据的整数部分。试验一下下面的MyNumber过程,看看VB是如何修正数据以适合变量数据类型的:


Sub MyNumber()
           Dim myNum As Integer
           myNum = 23.11
           MsgBox myNum
End Sub


如果你不用Dim语句声明变量,你通过在变量名称后面加上一个特殊字符同样可以指明该变量的类型。例如下面,你可以在变量名称后面附上美元($)符号,来指明变量FirstName为字符串类型(String):

Dim FirstName$


上面的声明和Dim FirstName As String是一样的。其它类型的声明字符列在表3-2里面。


类型声明字符

表3-2 类型声明字符


注意,类型声明字符只能用于六种数据类型。将这些字符附在变量名称后面就可以使用这些类型声明字符了。过程AgeCalc2示范表3-2中类型声明字符的使用情况:


Sub AgeCalc2()
             'variable declaration (变量声明)
              Dim FullName$
              DateOfBirth As Date
              Dim Age%
              'assign values to variables (给变量赋值)
              FullName$ = "John Smith"
              DateOfBirth = #01/03/1967#
              'calculate age (计算年龄)
              Age% = Year(Now())-Year(DateOfBirth)
              'print results to the Immediate window (在立即窗口里输出结果)
              Debug.Print FullName$ & " is " & Age% & " years old."
End Sub


技巧: 声明变量类型
变量类型可以用As后面的关键字来标示,也可以用后面附加的类型符号来标示。如果你既不加类型符号也不使用As命令,那么这个变量将为默认的类型,那就是VBA中的Variant类型。


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; }