|
こんにちは。
以前、メモリの解放について投稿しましたが、
未だ完全には解決に至らないためもう一度質問します。
うまくオブジェクトのメモリが解放が出来ていないようです。
それで、メモリをより使用しないようなオブジェクトの宣言方法を
教えてください。
現在、AプロシージャからBプロシージャを呼んでいます。
Aでは、String型の名称しかもっていないので、
それをBに引き渡す際にのみWorksheetにしています。
以下のようです。
Private Sub A
Dim WS_nm As String
WS_nm = "Sheet1"
Call B( ThisWorkbook.Sheets(WS_nm) )
End Sub
Private Sub B (WS As Worksheet)
・
・
End Sub
この場合、Bでは、WSは新しく生成されているのでしょうか?
B中では、Set WS = Nothing は行っていません。
この場合、メモリはBプロシージャを抜けたあとに解放されているのか・・。
それとも、
Private Sub A'
Dim WS As WorkSheet
Call B( WS )
End Sub
と、ワークシートを引数として引き渡した方が、
メモリ使用量はすくないのでしょうか?
また、グローバルに宣言をして、
引数で引き渡すのを止めた方がいいのでしょうか?
どうも、そのあたりのことがよくわかりません。
メモリを少なく使うVBA作成方法などの書いてあるサイトなど
でもよいので、教えてください。
お願いします。
|
|