VB常數

VB常數

在某特定的時候,雖然聲明了一個變數,但卻不希望這個數值被修改,這種永不會被修改的變數,統稱為常量或常數。

基本信息

常數

經常會發現代碼包含一些常數值,它們一次又一次地反覆出現。還可發現,代碼要用到很難記住的數字— 而那些數字沒有明確意義。

在這些情況下,可用常數大幅度地改進代碼的可讀性和可維護性。常數是有意義的名字,取代永遠不變的數值或字元串。儘管常數有點象變數,但不能象對變數那樣修改常數,也不能對常數賦以新值。常數有兩種來源:

內部的或系統定義的常數是應用程式和控制項提供的。在“對象瀏覽器”中的 Visual Basic ( VB ) 、和 Visual Basic for applications ( VBA ) 對象庫中列舉了 Visual Basic 的常數。其它提供對象庫的應用程式,如 Microsoft Excel 和 Microsoft Project,也提供了常數列表,這些常數可與應用程式的對象、方法和屬性一起使用。在每個 ActiveX 控制項的對象庫中也定義了常數 關於使用“對象瀏覽器”的詳細信息,請參閱“用對象編程”。

符號的或用戶定義的常數是用 Const 語句來聲明的。下節“創建屬於自己的常數”中將說明用戶定義的常數。

在 Visual Basic 中,常數名採用大小寫混合的格式,其前綴表示定義常數的對象庫名。來自 Visual Basic 和 Visual Basic for applications 對象庫的常數以 "vb" 開頭— 例如vbTileHorizontal。

設計前綴時應盡力防止發生意外衝突,不能出現常數名稱相同但表示不同數值的情況。即使使用了前綴,兩個對象庫也仍可能包含表示不同值的相同常數。在這種情況下,引用哪個常數取決於哪個對象庫具有更高的優先權。關於改變對象庫優先權的信息,請參閱 “引用對話框”部分。

為了絕對確保不發生常數名字衝突,可用以下語法來限定對常數的引用:

[libname.][modulename.]constname

Libname 通常是控制項或庫的類名。Modulename 是定義常數的模組的名字。Constname 是常數名。在對象庫中定義了每個元素,並能在“對象瀏覽器”中查看元素。

創建屬於自己的常數

聲明常數的語法是:

[Public|Private] Const constantname[As type] = expression

參數 constantname 是有效的符號名(其規則與建立變數名的規則一樣),expression 由數值常數或字元串常數以及運算符組成;但在 expression 中不能使用函式調用。

Const 語句可以表示數量或 Date / Time 量:

Const conPi = 3.14159265358979

Public Const conMaxPlanets As Integer = 9

Const conReleaseDate = #1/1/95#

也可用 Const 語句定義字元串常數:

Public Const conVersion = "07.10.A"

Const conCodeName = "Enigma"

如果用逗號進行分隔,則在一行中可放置多個常數聲明:

Public Const conPi = 3.14, conMaxPlanets = 9, _

conWorldPop = 6E+09

等號 ( = ) 右邊的表達式往往是數字或文字串,但也可以是其結果為數或字元串的表達式(儘管表達式不能包含函式調用)。甚至可用先前定義過的常數定義新常數。

Const conPi2 = conPi * 2

一旦已定義常數,就可將其放置在代碼中,使代碼更可讀。例如:

Static SolarSystem (1 To conMaxPlanets)

If numPeople > conWorldPop Then Exit Sub

設定用戶自定義常數的範圍

和變數聲明一樣, Const 語句也有範圍,也使用相同的規則:

為創建僅存在於過程中的常數,請在這個過程內部聲明常數。

為創建一常數,它對模組中所有過程都有效,但對模組之外任何代碼都無效,請在模組的聲明段中聲明常數。

為創建在整個應用程式中有效的常數,請在標準模組的聲明段中進行聲明,並在 Const 前面放置 Public 關鍵字。在窗體模組或類模組中不能聲明 Public 常數。

詳細信息 關於範圍的更詳細信息,請參閱本章前面的“理解變數的範圍”一節。

避免循環引用

由於常數可以用其它常數定義,因此必須小心,在兩個以上常數之間不要出現循環或循環引用。當程式中有兩個以上的公用常數,而且每個公用常數都用另一個去定義時就會出現循環。

例如:

'在 Module1 中:

Public Const conA = conB * 2 '在整個應用程式

'中有效。

'在 Module 2:

Public Const conB = conA / 2 '在整個應用程式

'中有效。

如果出現循環,在試圖運行此應用程式時,Visual Basic 就會產生錯誤信息。不解決循環引用就不能運行程式。為避免出現循環,可將公共常數限制在單一模組內,或最多只存在於少數幾個模組內。

VB常用常數

成員常數等效說明
CrLf vbCrLf Chr(13) + Chr(10) 回車/換行組合符。
Cr vbCr Chr(13) 回車符。
Lf vbLf Chr(10) 換行符。
NewLine vbNewLine Chr(13) + Chr(10) 換行符。
NullChar vbNullChar Chr(0) 值為 0 的字元。
n/a vbNullString 值為 0 的字元串 與零長度字元串 ("") 不同;用於調用外部過程。
n/a vbObjectError -2147221504 錯誤號。用戶定義的錯誤號應當大於該值。例如: Err.Raise(Number) = vbObjectError + 1000
Tab vbTab Chr(9) Tab 字元。
Back vbBack Chr(8) 退格字元。
FormFeed vbFormFeed Chr(12) 在 Microsoft Windows 中無用。
VerticalTab vbVerticalTab Chr(11) 在 Microsoft Windows 中無用。

相關詞條

相關搜尋

熱門詞條

聯絡我們