VBA系列講座(4):理解變量

發表于:2007-04-28來源:作者:點擊數: 標簽:VBA講座理解系列變量
4.4 變量 變量是用于臨時保存數值的地方.每次應用程序運行時,變量可能包含不同的數值,而在程序運行時,變量的數值可以改變. 為了說明為什么需要變量,可以按照如下步驟創建一個簡單的過程: 1)創建一個名為"你叫什么名字"的過程. 2)在過程中輸入如下代碼: Input

4.4 變量

  變量是用于臨時保存數值的地方.每次應用程序運行時,變量可能包含不同的數值,而在程序運行時,變量的數值可以改變.

  為了說明為什么需要變量,可以按照如下步驟創建一個簡單的過程:

  1)創建一個名為"你叫什么名字"的過程.
  2)在過程中輸入如下代碼:
  Inputbox "輸入你的名字:"
  現在不要擔心inputbox語句的語法,將在第六學時中了解到有關這條命令的更多信息.
  3)按下F5鍵運行過程,這時會顯示一個輸入框,要求輸入你的名字.
  4)輸入你的名字并按"確定"按鈕,則結束該過程.

  你輸入的名字到那里去了?如何找到用戶在輸入框中輸入的信息?在這種情況下,需要使用變量來存儲用戶輸入的結果.

  4.4.1 變量的數據類型

  使用變量的第一步是了解變量的數據類型.變量的數據類型控制變量允許保存何種類型的數據.表4-1列出了VBA支持的數據類型,還列出了各種類型的變量所需要的存儲空間和能夠存儲的數值范圍.

 表4-1 VBA數據類型

  作為ABV程序員,一個目標是選擇需要存儲空間盡量小的數據類型來保存所需要的數據,這正是表4-1提供各種數據類型存儲空間的原因。例如,要保存諸如班級學生總數這樣的小數字,那么Byte數據類型就足夠了。在這種情況下,使用Single數據類型只是對計算機存儲空間的浪費。

  4.4.2 用Dim語句創建變量(聲明變量)

  現在,你對變量可以使用的數據類型已經比較熟悉了,以下我們將創建變量.創建變量可以使用Dim語句,創建變量通常成為"聲明變量" Dim語句的基本語法如下:

  Dim 變量名 AS 數據類型

  這條語法中的變量名代表將要創建的變量名.對變量的命名規則和對過程的命名規則相同.這條語句中的數據類型部分可以是表4-1中的任何一種數據類型.

  變量名必須以字母開始,并且只能包含字母數字和特定的特殊字符,不能包含空格句號驚嘆號,也不能包含字符@ & $ #.名字最大長度為255個字符

  在接下來的練習中將說明如何在VBA中使用變量,你將要輸入你的名字,并用一個消息框將其顯示出來.具體步驟如下:

  1)創建一個名為"顯示你的名字"的子程序.
  2)輸入以下代碼:

  Public Sub 顯示你的名字()
  Dim s名字 As String
  s名字 = Inputbox("請輸入你的名字:")
  Msgbox "你好"& s名字
  End Sub

  3)將鼠標放到過程中的任何地方,按下F5鍵運行過程,會顯示一個輸入框.
  4)輸入你自己的名字并按回車鍵,會顯示一個消息框,顯示的文字中包含你自己的名字.
  5)單擊"確定"按鈕,返回過程中.

  在Dim語句中不必提供數據類型.如果沒有數據類型,變量將被定義為Variant類型,因為VBA中默認的數據類型是Variant.你知道這一點后,最初的反應也許是覺得應該不用自己決定數據類型,而將一切拋給VBA.這種觀念是完全錯誤的.你必須決定選擇使用何種數據類型。因為Variant數據類型占用存儲空間較大(16或22字節)而且它將影響程序的性能。VBA必須辨別Variant類型的變量中存儲了何種類型的數據。

  4.4.3 變量命名的慣例

  下表給出了推薦的變量命名慣例

    表4-2 變量命名的前綴

  4.4.4 使用數組

  如果你使用過其他編程序語言,可能對數組已經比較熟悉了.數組是具有相同數據類型并共同享有一個名字的一組變量的集合.數組中的元素通過索引數字加以區分,定義數組的方法如下:
  Dim array_name(n) As type (其中n是數組元素的個數)

  例如,如果要創建保存10個學生名字的數組,可以用以下語句:
  Dim s學生名字(9) As Integer

  注意,括號中的數字是9而不是10.這是因為在默認的情況下,第一個索引數字是0.數組在處理相似信息時非常有用.假設要處理15門考試成績,可以創建15個獨立的變量,這意味著要使用15個Dim語句。也可以創建一個數組來保存考試成績,具體如下:
  Dim s考試成績(14) As Integer

  聲明數組時的另一種方法是不給定大小??梢栽诔绦蜻\行時定義其大小。通過創建動態數組就可以做到。例如,你的程序要創建一表格,可以提示用戶輸入表格的行和列的數目。聲明動態數組的語法如下:
  Dim dyn_array() As type

  對數組聲明后可以在程序運行時用:ReDim語句指定數組的大?。?
  ReDim dyn_array()(array_size)

  參數array_size代表數組的新大小。如果要保留數組的數值,請在ReDim語句后使用保留字Preserve,具體語法如下:
  ReDim Preserve dyn_array(array_size)

  4.4.5 變量賦值

  聲明變量后就可以給變量賦值。請注意下列語句中為數組變量賦值時索引數字的使用。

  程序清單4-4

  Dim i人數 As Integer
  Dim i考試成績 As Integer
  Dim i As Integer

  i人數 = inputbox("輸入學生的人數:")
  ReDim Preserve i考試成績(i數量)
  For i = 1 to i人數
      i考試成績(i) = inputbox("輸入考試成績"& i )
  Next

4.5 使用常量

  現在,你已經知道變量是存儲非靜態信息的存儲容器.當存儲靜態信息時可以創建常量.它可以供程序多次使用而且便于記憶.比如圓周率比3.1415926好理解得多.

  要聲明常量并設置常量的值,需要使用const語句.常量聲明后,不能對它賦一個新的值.例如,假設需要聲明一個常量來保存銷項稅率,可以使用以下語句:
  c.net 銷項稅率 As Long = 0.17
  通常常量聲明時用全大寫字母以區分變量.

4.6 作用域

  到現在為止,已經學習了如何定義變量和常量,但是還不知道在何處定義.可以在兩個地方定義常量和變量:

  過程中定義和在模塊頂部一個名為"通用聲明"的區域內定義.而且定義的位置就決定了租用域.

  在過程中聲明,該變量只能在該過程中使用,其他過程中不能使用這個變量和常量,這中變量成為局部變量或過程級變量;在模塊頂部聲明的變量稱為模塊級變量,該變量在該模塊的所有過程中都可以使用。

  還有一種等級的作用域稱為公共級。公共級變量可以在應用程序的任何過程中使用,不論過程和變量是否定義在一個模塊。這就使得公共級變量在使用中十分靈活,但是公共級變量在程序運行時一直保留在內存中,這樣就占用了系統資源。要創建公共級變量,可以用Public語句,具體語法如下:
  Public variablename As datatype

  要創建公共級常量,具體語法如下:
  Public const CONSTANAME datatype = value

  公共級變量或常量必須在模塊頂部的“通用聲明”區域中定義。

4.7 小結

  本課的重點是變量和常量。在本課中你學會了如何創建變量來保存非靜態的數據。我們了解了VBA的數據類型,我們也學會了創建常量來保存靜態的數據。本課的最后部分我們學習了變量和常量的作用域。

4.8 疑難解答

  1.如果希望在多個位置使用變量的數據,應該在何處定義該變量?
  答:必須在模塊頂部的“通用聲明”區域內定義。對于模塊級變量用Dim語句,對于公共級變量用Public語句
  2.模塊是否獨立于工作簿?
  答:不,實際上模塊是工作簿的一部分,當保存工作簿時,對模塊所做的改變也同時保存下來.

  3.為什么不應該將所有變量定義為Variant數據類型?
  答:Variant類型的數據,占用較多的內存,并且影響應用程序的性能.

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97