在編寫程序時,少不了要使用變量和常量,它們都是程序中很重要的元素,是組織程序的基礎。
一個示例
下面是一個簡單的VBA程序,用來計算半徑為5的圓的面積。
Sub 示例2()
Const PI = 3.1415926
Dim r As Integer
Dim area As Double
r = 5
‘ 計算半徑為5的圓的面積
area = PI * r * r
End Sub
其中,r和area就是變量,PI就是常量。
什么是變量
變量就是在計算機中根據其數據類型預先占用一個位置,在這個位置里可以放置相應的數據。換句話說,我們要在計算機中保存數據,就要有相應的空間,變量就是用來指明這些空間的。
我們可以將值存儲在變量中,供程序使用,如下圖1所示。
圖1
注意,如果將另一個值放入已經存在值的變量中,那么原值就被新值所取代。
命名變量
在程序中,我們經常會使用多個變量。這樣,就需要給變量起不同的名字,以區分這些變量,例如圖1中的r就是一個變量的名字。
VBA規定了變量名的命名規則:
可以使用字母、數字和下劃線,但必須以字母開頭。
變量名最長不可以超過255個字符。
變量名不區分大小寫。
變量名不能與VBA保留字同名,不能與VBA中的函數、語句和方法同名。
變量名中不能使用空格和句點。
這就說明,我們在命名變量名稱時:
不能以數字或下劃線開頭。
不能在變量名中使用特殊類型的聲明字符(#、$、%、&或!)。
不能在變量名中使用運算符(+、-、*、/、<、>、、.、,、:)。
下列字符也不能使用(?、=、”、;、`、@、^)。
在同一作用域內不能有相同的名字。
變量的數據類型
在前一篇中,我們過程序中的各種數據都有自已的數據類型(例如整型、字符串型、布爾型等),變量也有自已的數據類型。
在定義變量時,通常要說明變量要存儲什么數據類型的值。也就是說,創建變量后,也決定了存儲在該變量中的值的數據類型。
例如,上面示例中的:
Dim r As Integer
Dim area As Double
定義變量時,指定變量r存放Integer型的數據,而變量area存放Double型的數據。
說明:與很多編程語言不同,VBA比較特殊,它在定義變量時,并不一定需要聲明存儲在變量中的數據類型。VBA可以自動處理運用數據時涉及到的細節,這對程序編寫來說的確很省事,但你會發現,這樣的程序執行的速度會更慢,使用內存的效率也不高。如果我們在定義變量時嚴格指明該變量的數據類型,那么不僅能有效利用計算機空間,并且該變量在進行數據類型轉換時,計算機會自動告訴你發生的問題。
聲明變量
如上所述,示例中已經給出了聲明變量的方法,即使用Dim語句來對變量進行聲明(或定義)。聲明變量的一般語法結構是:
圖2
當然,還可以使用Public來聲明一個公有變量。正如前面所說的,你可以省略掉As及之后的數據類型來聲明變量,讓VBA自已處理數據,但這并不會帶來多少好處。
確切地說,當省略數據類型時,VBA會使用默認的數據類型Variant,在程序處理過程中,會根據所處理內容來改變變量的數據類型。
說明:VBA中“古老的”聲明變量的方法
VBA也延續了BASIC定義變量數據類型的方法,即將一個字符加到變量名稱后面來指定變量的數據類型,例如:
Dim r%
將變量r聲明為整型。下表列出了有類型聲明字符的VBA數據類型。
數據類型類型聲明字符
Integer(整型)%
Long(長整型)&
Single(單精度浮點型)!
Double(雙精度浮點型)#
Currency(貨幣型)@
String(字符串型)$
常量
在程序中,如果我們處理的某些數據從不會改變,那么我們可以將它們定義成常量,即決不會發生改變的數值或字符串。
聲明常量
VBA規定使用Const語句來聲明常量。例如本文開頭示例中的:
Const PI = 3.1415926
定義了一個名為PI的常量,它的值是3.1415926,在程序中使用該常量,其值不會發生變化。我們沒有指明PI的數據類型,VBA會根據它的值確定數據類型,PI的數據類型是Double型。當然,我們可以在聲明的同時明確指定常量的數據類型:
Const PI As Double = 3.1415926
定義了常量之后,如果要在程序中修改它的值,例如給常量賦新值,將會產生錯誤。和變量一樣,也可以在前面添加Public來聲明一個公有常量。
說明:聲明常量的好處
在程序中,將多處使用的值聲明為常量,至少有兩大好處:
如果要修改值,只需手動修改常量定義即可,不必到多個地方修改同一值,不僅繁鎖,也容易遺漏。
給常量起一個好的名字,能夠清楚地表明其意圖,讓代碼更具可讀性。
除了我們定義的常量外,VBA還提供了很多預定義的常量,這些常量不用明確聲明就可使用。VBA預定義的常量通常以“xl”或“vb”開頭。