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的說法,證明聲明與否在效率上的差別。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM