也許你想念With-End With
的概念? With語句允許您在指定對象上執行一系列語句,而無需重新驗證對象的名稱。
所以,你得到的類的實例,然後將With
可以用來編寫報表,而無需重複對象的名稱:
Dim block as classBlock
Set block = funcBlock(ActiveSheet)
With block
.SomeFunctions
' .SomeProperty = 100
' .Save(true)
' etc.
End With
的With
既節省了您鍵入以下。
block.SomeFunctions
block.SomeProperty = 100
block.Save(true)
類的實例現在由可變block
引用並根據它被聲明的範圍存在。
如果多次調用函數funcBlock
,則每次調用函數時都會創建新對象。
因此,讓我們調用函數,例如三次:
Dim block1 as classBlock
Set block1 = funcBlock(ActiveSheet)
Dim block2 as classBlock
Set block2 = funcBlock(ActiveSheet)
Dim block3 as classBlock
Set block3 = funcBlock(ActiveSheet)
現在你有三個內存對象,其與變量block1, block2, block3
引用。 使用此變量可以訪問對象。
但是,當你調用該函數funcBlock
三次這樣的:
Dim block as classBlock
Set block = funcBlock(ActiveSheet)
' some code ...
Set block = funcBlock(ActiveSheet)
' some code ...
Set block = funcBlock(ActiveSheet)
...那麼只有最後一個實例是由varaible block
引用,可以訪問。 前兩個實例只是凌亂的內存:)。 HTH
來源
2016-02-14 13:20:04
dee
我會說不,是的。後者可能依賴於類的析構函數。但是,如果您在一大塊單元格上使用變體數組來輔助處理,則不會將單元格值重新讀入數組中;不,你會批量加載一次,處理它們,然後將它們批量轉儲回工作表。我不明白你爲什麼需要反覆打電話給你的班級,用...結束與否。 – Jeeped
謝謝。在我正在進行的項目中,我可能會將它稱爲三到四次,在不同的範圍和不同的工作表上。我可能重構代碼,以便每個表只調用一次,但在這一階段,我只是想了解上述情況下類實例會發生什麼。 – Harmless
給你的課堂添加一個終止事件,以便你可以看到它何時被摧毀。但是,當您啓動一個新的With塊時,您的類將被重新實例化,因爲函數會在每次調用時實例化該類的新副本。 – jkpieterse