| 
    
     |  | ▼UO3 さん: こんにちは。
 例
 
 
 With をアドレッシングだと考えると
 
 クラスモジュール(クラス名Class1)に
 
 Option Explicit
 Private Sub Class_Initialize()
 Debug.Print "インスタンス 作成"
 End Sub
 Private Sub Class_Terminate()
 Debug.Print "インスタンス 消滅"
 End Sub
 
 
 として、
 
 標準モジュールに
 
 '=======================================
 Sub test1()
 With New Class1
 MsgBox "Break 1"
 End With
 MsgBox "Break 2"
 End Sub
 
 これを実行すると、Break1では、インスタンスが作成され
 (作成された証拠に イミディエイトに「インスタンス 作成」が表示)、
 Break2では、解放(イミディエイトに「インスタンス 消滅」が表示)されています。
 
 
 Sub test2()
 With New Class1
 MsgBox "Break 1"
 Exit Sub
 End With
 MsgBox "break 2"
 End Sub
 
 このtest2でも 「インスタンス 消滅」が表示されますよね!!
 よって、プロシジャー終了時にアドレッシングの解除はされていますね。
 
 が、私の意見としては、原則プロシジャー内の出口は一つでよい
 という考え方です(構造化プログラミングでは良く見かける記述です)。
 こういう疑問が沸かないように
 
 Sub test()
 
 With Range("A1")
 
 If .Value = 1 Then
 MsgBox "Error"
 'Exit Sub  '←削除
 Else
 .Value = .Value + 1
 End If
 
 End With
 
 End Sub
 
 
 とするべきだと思いますけどねえ
 
 |  |