2013-12-20 16 views
0

在VBA中使用Class模塊時,如果在其前面使用Me時撥打Private Sub的呼叫將失敗,但是Public Sub的呼叫是否正常?爲什麼使用`Me`時對Class Module Private Subs的調用失敗?

例如,下面的代碼(不是完整的類模塊,只是一個snippit)會生成錯誤Method or data member not found或行Call Me.SetupQuote

但是,如果我使SetupQuote() a Public Sub一切正常。當一個類模塊正在從內部調用時,它是公共還是私人應該無關緊要?

我知道我可以在不使用Me的情況下調用Private Sub,但我想了解爲什麼VBA以這種方式運行。謝謝。

Private Sub Class_Initialize() 
    Me.QuoteID = 15 
    Call Me.SetupQuote 
End Sub 

Private Sub SetupQuote() 
    Set Quote = New classQuote 
    Call Quote.SetQuote(Me.QuoteID) 
End Sub 

回答

1

這不是一個非常令人滿意的答案,但這是MS編程Me界面的方式。這可能不是某個人僅僅表現出面向公衆的特性和方法的具體選擇。顯然,更好的用戶體驗將是公開和公開的。相反,這只是我實施Me的一個副作用。

Me界面可能會說「確定我在什麼類型的對象,創建該對象的一個​​實例,並公開該對象實例。」該對象實例只會顯示公共內容,就像在另一個模塊中創建對象實例一樣。

當'我'創建實例的時候沒有創建實例的機會。如果他們想要這樣做,他們將不得不通過一些標誌進入類建造者,表明它是通過Me界面還是其他方式構建。如果該標誌已設置,則公開私人內容,否則不要。即使他們想到了這一點,他們可能也不會執行它。這是額外的複雜性,有人會提出您可以鍵入過程名稱的觀點。

我不爲MS工作或有任何關於此的特殊知識。這只是我爲什麼一個明顯有用的功能不存在的猜測。

+0

感謝您的解釋。 「這只是我猜測爲什麼一個明顯有用的功能不存在。」這說明了這一切 - 這將是有益的,這是一種恥辱,這不是他們的。來自Web編程(PHP)的背景,依賴於在類中引用'this',這只是習慣嘗試使用'Me' –

相關問題