End If で終わらない If
昨日は、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
普段、社内の勉強会では、
「If で始まったら、必ずEnd If で終わります」
と説明しているので、これは非常に都合が悪い。
VBA入門間もない人ほど、こんなものを見たら混乱するに違いない。
ということでこれは、完全自己使用のマクロ以外では封印することにします。
参考まで。