Excel VBA 學習筆記4:VBA變數

所謂變數,就是可變的量。我們在前面已經接觸到了,有了變數我們就可以在循環里實現數據或單元格的自動變換。變數其實就好象在內存中臨時存放的小盒子,這種盒子有好幾種,每種里存放相應的物體。

一、變數類型

在VBA中我們常用到的變數類型有數字型(Byte、Integer、Long、Single、Double)、文本型(String)、布爾型(Boolean)、日期型(Data)、對象、數組等,有的是很多編程語言里常用到的,有的則是Excle中為了簡便操作而特殊定義的類型。具體變數類型的說明我們在VBA編輯器里按F1可以查看幫助文件,Visual Basic 語言參考下面有數據類型。

1、數值型

我們用Excel主要就是來處理數據的,所以數值類型是必然有的。數值類型又有整數和小數之分,即整型和浮點型。上面的例子是定義了一個整數類型的X,如果需要定義浮點型的則用關鍵字Float。

Advertisements

2、文本型

我們錄入單元格里的內容除了數字還有字母和漢字,這些都是文本類型的字元,用關鍵字String。這裡值得注意的地方是,VBA中漢字的長度是按照1個字元計算的,這個其它大多數語言是不一樣的,即用方法len得到的漢字長度就是漢字的個數,用lenb才會按照2個字元計算漢字。

3、對象

這是VBA與眾不同的地方,它會涉及到很多對單元格的操作,比如改變格式,所以專門設計了單元格類型的變數。所以變數的初始值都可以用set方法設置。

4、數組

數組是很多編程語言都具備的變數類型。有了數組你就可以一次定義很多變數,也可以非常有效的存儲數據。VBA里的定義方式比較特殊些,不要忘了括弧里是(a To b),而不是(a, b)。

Advertisements

以上是簡單介紹了幾種常用的數據類型,學會了查幫助文件就會學到很多知識。需要注意的是每種數據類型都是有範圍的,它們在內存中佔用的大小是不一樣的,所以它們能存放的東西也是有大小限制的。下面的表格列舉了各種類型佔用內存的大小和能夠存放數據的範圍。在使用的時候一定要注意選取合適的,一來不要出現整型數據里存放浮點數的錯誤,二來不要大材小用浪費內存。






二、變數的聲明

有人會問,我可不可以不聲明變數,讓計算機自動去處理呢?答案是可以,但是這樣會造成內存的浪費。當然,有的時候我們確確實實不知道該聲明成什麼變數。

但是,如果你選擇了要求變數聲明,你必須進行聲明,否則會編譯錯誤。(工具--選項--編輯器標籤下面有這個選項,如果勾選了,在編輯器的頂端會有Option Explicit。)

聲明變數的方式常用的有幾種,每種都可以一次聲明多個變數,多個變數名稱見用逗號隔開:

Dim 變數名稱 As 變數類型,最常用的變數聲明方式,可用在過程和模塊中。

Public 變數名稱 As 變數類型,聲明為公共變數。

Private 變數名稱 As 變數類型,聲明為私有變數。

Static 變數名稱 As 變數類型,聲明靜態變數,在整個代碼運行期間它的值不會變化。

如果我們一時不知道該聲明成什麼變數類型,只聲明變數名稱而不指定變數類型,則默認為Variant類型(變體型),它會根據需要存儲的數據類型改變自己的類型與之匹配。還是那句話,盡量少用,因為會造成內存的浪費。

三、變數的存活周期

變數分為過程級變數、模塊級變數和全局變數,不同的變數有不同的使用範圍和在內存中存活周期。

1、過程級變數:每一個Sub就是一個過程,在其中聲明的變數均為過程級變數,可用Dim或Static聲明。過程結束,變數值釋放。

2、模塊級變數:一個模塊中可以有多個過程,在所有過程之外聲明的變數就是這個模塊共享的變數,可用Dim或Private聲明。變數的值只在本模塊中保持,工作簿關閉時釋放。

3、全局級變數:用Public聲明的變數就是全局變數,在任何一個模塊中的任何位置都可以聲明。 在所有的模塊中都可以調用,值會保存到Excel關閉時才會被釋放。

相關筆記請參閱:

Excel VBA 學習筆記3:循環語句

Excel VBA 學習筆記2:條件語句

Excel VBA 學習筆記1:語句、對象、方法、屬性

Advertisements

你可能會喜歡