1樓
大 中
小 發表於 2006-12-4 19:26
Visual Basic 教學 - 《關於變數》變數
變數
在 Visual Basic 中,當執行應用程式期間,您可能會用變數暫存數值。變數必須有名稱 (用來引用該變數所包含的值) 和資料型態 (決定變數可以儲存的資料種類)。
您可以把變數看作記憶體中存放未知數值的預留位置。舉例而言,假定您正為水果舖撰寫一個統計蘋果銷售的軟體。在銷售實際發生之前,您並不知道蘋果的價格和銷量。此時,您可以用兩個變數來儲存未知的數值,並將它們命名為 ApplePrice 和 ApplesSold。每當執行程式時,使用者才提供這兩個變數的具體數值。要計算總銷售額,並且將結果顯示在名稱為 txtSales 的文字方塊中,程式碼應該是這樣的:
txtSales.txt = ApplePrice * ApplesSold每次根據使用者提供的數值,這個運算式會傳回不同的金額。由於有了變數,您就可以設計一個運算式,而不必事先知道實際的輸入是多少。
在這個例子中,ApplePrice 的資料型態是貨幣,而 ApplesSold 的資料型態是整數。變數還可以表示其它的數值,比如:文字、日期、各種數值型態,甚至物件也可以。
儲存和擷取變數中的資料
您可用指定陳述式進行計算,並將結果指定給變數。
ApplesSold = 10 ' 將 10 指定給變數。ApplesSold = ApplesSold + 1 ' 變數值加一。請注意,範例中的等號是指定運算子,而不是等於運算子;它是將數值 (10) 指定給變數 (ApplesSold)。
宣告變數(Declaration)
宣告變數就是事先將變數的相關資訊通知給程式知道。您可用 Dim 陳述式宣告變數,並指定變數名稱:
Dim variablename [As type]
在程序內部使用 Dim 陳述式宣告的變數,只有在該程序執行時才存在。程序一結束,該變數的值也就消失了。此外,程序中的變數值對程序來說是區域性的,也就是說,您無法在一個程序中存取另一個程序中的變數。由於這個特點,您就可以在不同程序中使用相同的變數名稱,而不必擔心名稱衝突的問題。
變數名稱:
- 必須以字母開頭。
- 無法包含句號或者型態宣告字元。
- 不得超過 255 個字元。
- 在同一個有效範圍內必須是唯一的。有效範圍就是變數可以被引用的區域,例如程序、表單等等。
Dim 陳述式中的選擇性 As type 子句可以讓您定義變數的資料型態或物件型態。資料型態定義了變數所儲存資訊的型態。舉例而言,String、Integer 和 Currency 等都是資料型態。變數的型態也可以是來自 Visual Basic 或其它應用程式的物件。Object、Form1 和 TextBox 都是 Visual Basic 物件型態或物件類別的範例。
詳細資訊 關於物件的詳細資訊,請參閱〈運用物件〉和〈運用元件〉。本章稍後的〈資料型態〉一節將會詳細討論資料型態。
宣告變數的其它方式:
- 不在程序內部,而在表單、一般或物件類別模組的宣告區塊中宣告變數,這將使變數對模組中的所有程序有效。
- 使用 Public 保留字宣告變數,這將使變數在整個應用程式中都有效。
- 使用 Static 保留字宣告一個區域變數,即使程序結束,變數值仍然會保留著。
隱含宣告(Implicit Declaration)
在使用一個變數之前,您並不必先宣告這個變數。舉例而言,您可以撰寫如下列所示的函數,如此在使用變數 TempVal 之前就不必先宣告它。
Function SafeSqr (num) TempVal = Abs (num) SafeSqr = Sqr (TempVal)End FunctionVisual Basic 會用這個名稱自動建立一個變數,使用這個變數時可以把它當成已明確宣告。雖然這種方法很方便,但是如果把變數名稱拼錯了的話,會導致一個難以察覺的錯誤。舉例而言,假定您寫了這樣一個函數:
Function SafeSqr (num) TempVal = Abs (num) SafeSqr = Sqr (TemVal)End Function乍看起來,這兩段程式碼好像是一樣的。但是因為在倒數第二行把 TempVal 變數名稱拼錯了,所以函數總是傳回 0。當 Visual Basic 遇到新名稱時,它無法分辨您是想隱含宣告一個新變數呢,還是您把一個現有的變數名稱寫錯了,於是只好再用這個名稱建立一個新變數囉。
明確宣告(Explicit Declaration)
為了避免拼錯變數名稱所引起的種種麻煩,您可以事先設定,只要遇到一個未經明確宣告的變數名稱,Visual Basic 就會發出警告。
明確宣告變數
- 在物件類別模組、表單模組或一般模組的宣告區塊中可加入這個陳述式: Option Explicit- 或 -
在「工具」功能表中選取「選項」,按一下「編輯器」頁籤,再選定「要求變數宣告」選項。這樣就會在任何新模組中自動插入 Option Explicit 陳述式,但不會在已建立的模組中插入;所以在專案內部,只能用手動方法在現有模組中新增 Option Explicit 陳述式。
如果此陳述式在包含 SafeSqr 函數的表單或一般模組中已經生效,那麼 Visual Basic 將認定 TempVal 和 TemVal 都是未經宣告的變數,並為兩者發出錯誤訊息。您可以明確宣告 TempVal。
Function SafeSqr (num) Dim TempVal TempVal = Abs (num) SafeSqr = Sqr (TemVal)End Function因為 Visual Basic 對拼錯的 TemVal 會顯示錯誤訊息,所以您會立刻明白發生什麼問題。由於 Option Explicit 陳述式有助於發現這類型態的錯誤,所以建議您最好在所有程式碼中善加利用。
附註 Option Explicit 陳述式的運作範圍僅限於陳述式所在模組,所以,對每個需要 Visual Basic 強制明確宣告變數的表單模組、一般模組及物件類別模組,您必須將 Option Explicit 陳述式放在這些模組的宣告區塊中。如果您選取「要求變數宣告」,Visual Basic 會在下個表單模組、一般模組及物件類別模組中自動插入 Option Explicit,但不會將它新增到現有程式碼中。您必須在專案中透過手動才能將 Option Explicit 陳述式加到任何現有模組中。
|