- Visual Basic從初學到精通
- 張建輝等編著
- 2585字
- 2019-01-09 13:35:15
3.2 變量和常量
Visual Basic中進行計算時,需要臨時存儲數據,這時就需要將這些臨時數據存儲在變量中。變量幫助用戶將信息暫時存儲在計算機的內存里。一旦定義了變量,該變量表示的將是一個內存位置,直到釋放該變量。
3.2.1 變量的命名規則
為了區別變量,可以給變量命名,命名時需遵守一定的規則。
變量名必須以字母開頭。例如,不能出現像2bad這樣的變量名。
只能由字母、數字和下畫線組成。不能含有小數點、空格等字符。
字符個數必須在255個以內。
不能同VB的關鍵字(如語句名、函數名等)一樣,如Print、Sub、End等。
變量名中的大寫字母和小寫字母相同。即不區分大小寫字母。
變量名在其有效范圍內必須是唯一的。
注意
在Visual Basic中,除變量命名需要遵守這些規則外,過程名、符號常量名、記錄類型名、元素名等都稱為名字,命名也必須遵守上述規則。
3.2.2 變量的定義和分類
在Visual Basic中可以設定在使用變量前必須進行聲明。設置方法是在模塊的所有過程之前加上Option Explicit語句。加上后,在程序中如果有沒有事先聲明的變量,程序在運行到這個語句時會彈出提示信息框,如圖3.1所示。用戶也可以通過界面操作實現。操作過程如下:

圖3.1 提示對話框
① 選擇“工具”|“選項”命令將會彈出“選項”對話框,如圖3.2所示。

圖3.2 “選項”對話框
② 選擇“要求變量聲明”選項,則會在任何新建的模塊中會自動加上一個Option Explicit語句,但不包括之前的模塊。
變量聲明的方式主要有顯式聲明和隱式聲明。顯式聲明就是用說明語句(Dim、Static、Public)聲明變量。隱式聲明就是在程序開始時不聲明變量,程序默認將變量定義為可變類型,就是按變量的值來決定變量的類型。
1.用Dim聲明變量
用Dim聲明的變量稱為自動變量或動態變量。變量的作用范圍與聲明語句所在的位置有關,如果要在整個窗體中都可以使用,則聲明語句應該放在窗體的聲明部分。如果只在某一過程中使用,則聲明語句可放在過程內部。聲明格式:
Dim變量名As類型
注意
用Dim聲明的變量,在其作用范圍內每次調用時都會先將這些變量的值初始化。
2.用Static聲明變量
用Static聲明的變量稱為靜態變量,即程序沒有停止運行前變量的值不會隨過程的調用而初始化。下面簡單地用一個小例子來區別兩種聲明方式。程序設計界面如圖3.3所示。

圖3.3 程序界面
代碼如下:
'變量使用前必須聲明 Option Explicit '命令按鈕的Click事件 Private Sub Command1_Click() '聲明變量部分 Dim a As Integer '使用Dim聲明的變量a Static b As Integer '使用Static聲明的變量b '改變變量的值 a = a + 1 '使a加1 b = b + 1 '使b加1 '在文本框中顯示變量的值 Text1.Text = a '在Text1文本框中顯示變量a的值 Text2.Text = b '在Text2文本框中顯示變量b的值 End Sub
程序運行后,單擊“調用過程”按鈕5次后,程序運行圖如圖3.4所示。

圖3.4 程序運行圖
從上例中可以看到用Dim聲明的變量a在每次調用過程的時候都是先進行初始化,將a的值初始化為0,然后加1,所以a的值無論單擊“調用過程”按鈕多少次都不會改變。而Static聲明的變量b因為是靜態變量,所以b的值隨單擊按鈕的次數而增加。
3.用Public聲明變量
用Public聲明的變量稱為全局變量。但如在窗體中或過程中使用Public聲明變量,則跟用Dim聲明變量沒有區別。
3.2.3 變量的作用范圍
根據變量的作用范圍,可以把變量分為局部變量、模塊變量和全局變量三大類。
1.局部變量
局部變量聲明在某一過程中,其作用域就是該過程,本模塊中的其他過程不能訪問該變量,本工程中的其他模塊也不能訪問。局部變量的聲明常用Dim或Static來聲明。局部變量可以存放任何類型的數據,包括數值、字符串、日期和時間。在局部變量中隨著所賦值的不同,變量的類型也隨著不斷變化。
在同一模塊的不同過程中可以聲明相同的變量名,這些變量之間沒有任何關系。如果需要,可以通過過程名.變量名的形式分別引用不同過程中相同名字的變量。
2.模塊變量
模塊級變量,也叫做窗體級變量,對該模塊的所有過程都可用,但對其他模塊的過程不可用。在使用模塊變量之前必須對其進行聲明,其具體過程包括:
按F7鍵打開代碼窗口。
在“對象”列表框中選擇“通用”。
在“過程”列表框中選擇“聲明”。
在聲明部分用Dim或Private來聲明變量。
注意
使用Private或Dim來聲明變量并沒有什么明顯的區別,一般使用Private更容易跟Public區別開來,使程序代碼更容易理解。
3.全局變量
全局變量也稱為全程變量,其作用域最大。從程序開始時存在至程序結束,不過全局變量的改變也許會導致程序出錯,這樣就不得不讀遍程序來尋找在什么地方改變了全局變量。全局變量使用Public或Global語句進行聲明,只能在標準模塊中聲明,而不能在過程或窗體模塊中聲明。
注意
一個窗體中可以含有若干個過程,包括事件過程和通用過程。當同一窗體內的不同過程使用相同的變量時,必須定義為窗體級變量。標準模塊是只含有代碼的應用程序文件。為了建立一個新的模塊,選擇“工具”|“添加模塊”命令。
3.2.4 常量
在計算機的內存中存儲信息除了使用變量外,還可以使用常量。用戶一旦定義了常量,在以后的程序中就不能再用賦值語句來修改其值,否則,在程序運行時,會產生錯誤。
常量是有意義的名字,用來取代程序執行期間保持不變的數值或字符串。定義常量可以改進代碼的可讀性和可維護性。常量主要分為文字常量和符號常量。文字常量又分為字符串常量和數值常量。
字符串常量由字符組成,如"Welcome Visual Basic 6.0"等。
數值常量包括整型數、長整型數、貨幣型數和浮點數四種表達方式。
文字常量的類型和值由其本身的表示形式來決定。但Visual Basic在判斷常量的數據類型時,有時存在多義性。如1.34可能是單精度類型,也可能是雙精度類型或貨幣類型。在默認情況下,Visual Basic將選擇需要內存容量最小的表示方法來處理,因此1.34在默認狀態下會被作為單精度數來處理。
當然,為了顯式地指明常數的類型,可以在常數后面加上類型說明符,具體設置可參考表3-1。
表3-1 類型說明符

在程序設計中,經常會遇到一些多次出現或難于記憶的數值或字符串。這時,可以定義符號常量,用來代替這些數值或字符串,其語法格式如下:
[Public/Private] Const常量名 [As類型]=表達式
Public/Private表示的是常量聲明的范圍。
常量名是有效的符號名(其命名規則與變量的命名規則相同)。
表達式由數值常量或字符串常量及運算符組成。但在表達式中不能使用函數調用。
與變量聲明相同,常量聲明也有范圍,其使用規則主要包括:
創建僅存在于過程中的常量,在這個過程內部使用聲明語句聲明常量。
創建對模塊中所有過程都有效但對模塊之外的任何代碼都無效的常量,在模塊的聲明段中使用聲明語句聲明常量。
創建在整個應用程序中有效的常量,在標準模塊的聲明段中使用聲明語句聲明常量,并在Const前面放置Public關鍵字。
注意
在窗體模塊或類模塊中不能聲明Public常量。