End If で終わらない If

f:id:Infoment:20191020222910p:plain

昨日は、With について試してみたところを紹介した。
infoment.hatenablog.com

その後、thomさんに解説をいただくことが出来た。
(いつも、ありがとうございます)。

この方式について、使い処を色々考えてみた。思いついたのが、↓ こちらで作成したクラスモジュール。
infoment.hatenablog.com

こちらでは、以下のように用いることで、画面更新を一時停止している。

Sub test()
    Dim APC As AppControl
    Set APC = New AppControl
End Sub

これを、昨日の方法で書くとこうなる。

Sub test()
    With New AppControl: End With
End Sub

コードの行数は殆ど変わらないが、使う予定の無い変数を宣言するより無駄が少ないかも。


ところで、Sub で始まったものは、End Subで終わる。With で始まったものは、End With で終わる。ところが If は、以下のどちらの記述も許されているようで。

Sub test()

    ' If で始まり、End If で終わる。
    If IsNumeric(Range("A1").Value) = True Then
        MsgBox "A1セルの値は数値です。"
    End If
    
    ' If で始まるが、End If で終わらない。
    If IsNumeric(Range("A1").Value) = True Then MsgBox "A1セルの値は数値です。"
    
End Sub

今試してみたところ、こんなのまでOKだった。

Sub test()
    Dim a: a = 1
    Dim b: b = 2
        If a = b Then MsgBox "!" Else MsgBox "?"
End Sub

f:id:Infoment:20191020222042p:plain

普段、社内の勉強会では、
「If で始まったら、必ずEnd If で終わります」
と説明しているので、これは非常に都合が悪い。
VBA入門間もない人ほど、こんなものを見たら混乱するに違いない。

ということでこれは、完全自己使用のマクロ以外では封印することにします。

参考まで。