【VBA】End Ifがない。省略できる条件とは
If x > 0 Then MsgBox "xは正の値です"
このようなEnd IfのないIf文を見かけたことがありますか?
このコードはEnd Ifがありませんが、エラーのない正しいコードです。
普通、If文とEnd Ifはセットで教えられるので、間違ったコードと思ってしまうのは無理ありません。
VBAでは、条件を満たすことでEnd Ifを省略することができます。
今回はEnd Ifを省略できる条件を説明します。
End Ifを省略できる条件
VBAのIf文では、通常は条件が真である場合に実行するブロックを指定して、その後にEnd Ifキーワードが必要です。
ただし、次のコードではEnd Ifを省略することができます。
Sub Sample1()
Dim x As Integer
x = 10
If x > 0 Then MsgBox "xは正の値です"
End Sub
省略できる条件は改行の有無になります。
このコードではThenのあとに、改行しないでMsgBox関数を書いています。
このように改行なしならば、End Ifは省略可能です。
Thenで実行する内容が短いならば、すっきりしてとても見やすくなります。
反対に、Thenで実行する内容がたくさんあるならば改行は必要で、End Ifも必要ということになります。
- Thenの後に改行なし:省略可能
- Thenの後に改行あり:省略不可
まとめるとこのようになります。
End Ifの分だけコード数が減るので、Thenで実行する内容が短いならば省略するのがおすすめです。