2013-12-10 43 views
2

考慮命名類模塊:MyClassVBA - 命名和實例化一個類模塊

它可與早期綁定使用實例化:

Dim cls As MyClass 
Set cls = New MyClass 

但一個可以實例化:

Dim MyClass As MyClass 
Set MyClass = New MyClass 

因此,您可以使用同名的對象。

這是什麼問題?

回答

3

VBA不區分大小寫,如C#這樣class1Class1是相同的東西..

沒有什麼嚴重錯了(意思是:因爲編譯器允許...)使用相同名稱一個對象實例作爲它的類,除了一般情況下,它將被認爲是一個非常糟糕的編程實踐,因爲它將類實例用作類實例。

唯一的問題是,對於下一個將會觸摸你的代碼的開發者,或者將來你自己,你可能會非常困惑,看着這個。你總是可以右鍵單擊變量的名稱並選擇定義,但是在一個漫長而越野的運行中,這將是一個真正的痛苦在後面...

假設somone給了你20K + 50行的代碼行和150它的實例。他說:有些東西不起作用,你是一個調試和發現有什麼問題......我不想碰那個......

你可以在VBA中這樣做的原因是因爲你無法在VBA中創建自己的靜態類,因此一個類不會公開任何屬性,因此在調用Class1實例時,智能感將僅顯示實例的可用屬性 - 不是類。 VBA也不支持類多態(所以沒有內部保護等訪問器),所以不可能從類派生。