私は過去2年間にExcel VBAを教えてきましたが、コードセグメントの最後に変数を配置するのが適切な場合があるという考えがあります。例えば、私はそれがRon de Bruin's code for transferring Excel to HTMLから適応このビットで行わ見てきました:以来、私はこの上でいくつかの検索を行って、それを行う方法を越えて非常に少ないことがわかりましたいつExcel VBA変数を強制終了するか、Nothingに設定する必要がありますか?
Function SaveContentToHTML (Rng as Range)
Dim FileForHTMLStorage As Object
Dim TextStreamOfHTML As Object
Dim TemporaryFileLocation As String
Dim TemporaryWorkbook As Workbook
...
TemporaryWorkbook.Close savechanges:=False
Kill TemporaryFileLocation
Set TextStreamOfHTML = Nothing
Set FileForHTMLStorage = Nothing
Set TemporaryWorkbook = Nothing
End Function
、および1回のフォーラムの投稿a statement that no local variables need to be clearedに彼ら存在を中止するEnd Sub
。私は上記のコードに基づいて、End Function
、または私が遭遇していない他の状況では当てはまらないかもしれないと推測しています。
だから私の質問はこれに沸く:
- は、いつ、なぜ、変数のクリーンアップのために説明してウェブ上のどこかにあり、私はそれを見つけることができますか?
そして、誰かがここで説明してくださいすることができない場合 ...
- ときエクセルVBAのための変数のクリーンアップが必要であり、それがないときは?
- さらに具体的には...特定の変数の使用(公共の変数? 関数定義の変数?)は、サブタイトルよりも長く のメモリにロードされたままであるため、クリーニングしなければ問題を引き起こす可能性があります。 up私の後に?
ありがとうございますGSerg、この説明は明確かつ簡潔であり、私に変数管理の方がはるかに優れています。もう1つの質問:あなたは、 "変数のアクセスレベルはその寿命に影響しない"と言う。その有効期間がアクティブなコード(開始)によって値が最初に設定され、そのコードが 'End'タグ(終了)に達すると境界があるかどうか知っていますか?それとも、プロジェクトがリセットされたら終了するのですか?私は別のモジュールで淡色表示された公開変数の値を設定することでこの理論をテストしようとしましたが、変数はローカルウィンドウには一度も現れませんでした。 –
@KarlRookeyパブリックとプライベートは、クラスレベルとプロシージャレベルとで異なります。パブリックとプライベートは生涯に影響しません。クラスレベルとは、クラスが存続する限り、変数の存続期間を意味します。モジュールレベルとは、プロジェクトがリセットされない限り、変数の存続期間を意味します。 「生命」と「何かを含む」はsynonimsではないことに注意してください。変数は 'Nothing'を含み生きることができます。 – GSerg