今回はOfficeのVBAで、If文を一行で記述する方法を紹介します。
If文を一行で記述する方法
If文は通常、以下のように記述します。
If ( 条件式 ) Then
処理
End If
これを一行で書くと、以下のようなコードになります。
※「End If」を記述しないことで、実現できます
If ( 条件式 ) Then 処理
Else有りでも一行で書けます。
If ( 条件式 ) Then 処理1 Else 処理2
ElseIfを使う場合は一行では書けないようです。
そもそも、一行で書いた方が良い?
If分を一行で書くと見た目がすっきりして、あたかも「かしこいコード」に見えますが、
必ずしも万人にとって読みやすいと思う記述方法ではないと私は思います。
コードは、自分にも他人にも読みやすいものであるべきです。
なので、
一行で書くと読みやすいコードになると思うのであれば、一行で書いた方が良いし、
一行で書くと”もしかしたら”読みにくいコードになるかもしれないと思うのであれば、分けて書いた方が良いと思います。
例えば、こういったケースはどちらが読みやすいでしょうか。
例)ある関数内で、対象フラグが9(エラーフラグ)なら即リターンする
①
If (TargetFlg = 9) Then Exit Function
②
If (TargetFlg = 9)
Then Exit Function
End If
私なら①の方がスコープが狭まるので読みやすいです。
内容も複雑ではないので、すぐに理解できます。
ただ②も素直なので、どちらを読みやすいと思うかは人によるかもしれませんね。
例)取得した日付が10文字(YYYY/MM/DD)ならそのまま返し、
異なれば(YYYYMMDD)、 10文字(YYYY/MM/DD) にして返す関数
①
If (Len(TargetDay) = 10) Then DayFormat = TargetDay Else DayFormat = Left(TargetDay, 4) & "/" & Mid(TargetDay, 5, 2) & "/" & Right(TargetDay, 2)
②
If (Len(TargetDay) = 10) Then
DayFormat = TargetDay
Else
DayFormat = Left(TargetDay, 4) & "/" & Mid(TargetDay, 5, 2) & "/" & Right(TargetDay, 2)
End If
私なら②の方が素直で読みやすいです。
①は一行にすると読みづらすぎます!
恐らく他の人からしても②の方が読みやすいのではないでしょうか。
Elseを使う時点で分けた方がいいかもしれませんね。
ということで、判断に迷ったら
「一行で書くことで、自分や他人にとって読みやすくなるか」を考えて記述すると良いと思います。
以上です。
今回の記事が何かの参考になれば幸いです。ありがとうございました♪