1. 程式人生 > >VBA中關於dim的簡單總結

VBA中關於dim的簡單總結

樓主是個初學者,在應用vba時遇到了dim方面的問題,查了很多資料後想把關於dim的這點兒知識簡單整理出來

首先,從我遇到的問題作為切入點吧, (不得不承認我遇到的錯誤是很低階的)

具體的情境就不還原了,將問題抽象了出來,程式碼如下:

執行結果

可以看到integer1被初始化為了空值,integer2被初始化為0

 

樓主想當然的認為dim的同類型多變數宣告方式為 dim  變數名1,變數名2 as type   這種形式,導致了錯誤

接下來,讓我們先檢視一下dim的語法

Dim [WithEvents]varname[(

[subscripts])] [As [New]type] [, [WithEvents]varname[([subscripts])] [As[New] type]] . . .

由此,正確的格式應為 Dim integer1 as Integer, integer2 as Integer 

在我之前使用的方法中,integer1會被初始化為一個Variant型別的值,可以隨著對其的操作變成任意型別。integer2則會被正常的初始化為0.

 

在VBA中我們使用Dim語句進行變數的宣告,像大部分程式語言一樣,也分為區域性與全域性宣告:在過程中使用即過程級別變數,模組頂部則為模組級別變數。

而Dim的使用方法,上面也提到過了,Dim[WithEvents] varname[([subscripts])] [As [New]type] [, [WithEvents]varname[([subscripts])] [As[New] type]] . . .

你可以在一行中宣告多個型別的變數如: Dim string1 as String, integer1 as Integer, single1 as Single,但注意,若你如此 Dim integer1,integer2 as Integer,變數integer1只能會是Variant型別,即相當於Dim integer1 或者Dim integer1 as Variant。

在初始化值方面,Variant 變數被初始化為 Empty,具體型別的變數的各自獨立進行初始化,例如String型別被初始化為"",Integer型別被初始化為0

 

最後提一句吧,網上看到有人說vba可以不宣告變數,寫出來就用即可。也確實是這樣,在沒有option explicit的情況下不會產生語法錯誤,但非常不建議這樣做,Dim具體型別變數除了可以提高效率,還可以方便註釋、讓程式碼閱讀起來更容易。所以還是建議儘可能使用dim宣告變數,即便是一個Variant型別。

以下引用一位老師ZhouFfett的說法,證明宣告與否在效率上的差別。