|
▼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
とするべきだと思いますけどねえ
|
|