Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


17980 / 76732 ←次へ | 前へ→

【64196】Re:End With
発言  YU-TANG  - 10/1/24(日) 21:41 -

引用なし
パスワード
   こんばんは、YU-TANG です。

細かいことですが、もしかするとその細かいことを気にされている
かもしれないので、念のため。

▼UO3 さん:
> Exitで抜けるタイミングでEnd Withが処理している
> 【参照の解放】がなされるから気にする話ではないということですね。

厳密に言うと、End With が行っているのは単にオブジェクトの修飾補完を
終了するだけです。
それに伴って参照が解放される場合もありますが、されない場合も
あります。なので、End With を通ったからといって、参照の解放を
当てにしない(期待しない)方が無難です。

たとえば、ichinose さんのお書きになった【64192】のサンプルを
お借りするとして。

Sub test2()
  With New Scripting.Dictionary    ' 事前バインディング(Scripting.Runtime ライブラリに参照設定)
    .Add 1, GetClass1
    Debug.Print "Break 1"
  End With
  Debug.Print "Break 2"
End Sub

Sub test3()
  With CreateObject("Scripting.Dictionary")    ' 実行時バインディング(参照設定不要)
    .Add 1, GetClass1
    Debug.Print "Break 1"
  End With
  Debug.Print "Break 2"
End Sub

Function GetClass1() As Class1
  Set GetClass1 = New Class1
End Function

test2 と test3 を実行してイミディエイト ウィンドウを確認されると、
なかなか興味深い出力結果が得られると思います。

それでは。

2 hits

【64189】End With UO3 10/1/24(日) 12:34 質問
【64190】Re:End With kanabun 10/1/24(日) 14:11 発言
【64191】Re:End With UO3 10/1/24(日) 14:53 お礼
【64196】Re:End With YU-TANG 10/1/24(日) 21:41 発言
【64197】Re:End With ichinose 10/1/24(日) 22:08 発言
【64198】Re:End With UO3 10/1/24(日) 22:10 お礼
【64199】Re:End With ichinose 10/1/25(月) 7:59 発言
【64192】Re:End With ichinose 10/1/24(日) 14:58 発言
【64193】Re:End With UO3 10/1/24(日) 15:34 お礼

17980 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free