条件分岐 〜 if構文 〜

マクロに限らずデータを扱っていると「こんなときはこうしたい」「あんなときはああしたい」など様々な場面で条件分岐させたいことがでてくる思います。

「この場合の時さだけ処理したいんだよな、、でも”この時の場合だけ”ってどう書けばいいの?」
「複数条件をしたい場合ってどう書くの?」

いろいろな疑問や、つまづきがあると思います。

ここでは条件分岐(if構文)の

  • 基本的な書き方
  • 複数条件の書き方
  • そもそもエラーがある場合の書き方
  • 書き方のコツ
について説明します。

〜if文の書き方〜

■ 基本的な書き方 ■

 
if構文は下記が基本となります。

if構文の書き方
if [ ここに条件式を記述 ] then

[ 条件一致の場合の処理をここに書く ]

else

[ 条件不一致の場合の処理をここに書く ]

endif

赤文字の部分が構文となっております。
[ ]の部分に各条件文や、処理内容を書いていきます。

いちおう基本ルールとしては「 if で始まり、 endif で終わる 」
※ 書き方によってはendif がない場合もありますが、ここでは省略します

例えば、
「もしセルA1とセルB1の値が一致している場合は、
メッセージボックス”一致だよ”を表示

不一致の場合はメッセージボックス”不一致だよ”を表示
。」
の処理をしたい場合は下記のように記述となります。

例文
if range(“A1”) = range(“B1”) then
 msgbox ”一致だよ”
else
 msgbox ”不一致だよ”
endif

(ちょっと脱線)ところで、気づきましたでしょうか?
書いていることは日本語文と同じであるということを(。はちょっと反則かもしれませんが笑)。
 
 
マクロに限らず、私はエクセル関数でも都合よく「,(カンマ)」「.(コンマ/ドット)」に意味をもたせて覚えています。
 

日本語読みに合わせてみた
if  range(“A1”) = range(“B1”) then
もし セルA1とセルB1が一致   の場合は

 msgbox        ”一致だよ”
 メッセージボックスで ”一致だよ”を表示

else
そうじゃない場合は

 msgbox         ”不一致だよ”
 メッセージボックスで ”不一致だよ”を表示して

endif
条件終わり

〜複数条件を指定する場合〜

マクロでよくやってしまう初歩的なミス、よく起こるエラーの一つが複数条件の指定ではないでしょうか。
私もつまづきました。

例えば
「セルA1がセルB1とセルC1と一致していた場合は◯◯の処理を実行したい」
という場合。

スポンサーリンク

日本文の通りに書くと

間違い例
if range(“A1”) = range(“B1”)  and  range(“C1”) then
   ここに◯◯の処理内容を書く
endif

と書いてしまいがちです。

これは、元の日本文が一部省略されていることにより起こる間違いとなります。

正しい日本文としては「セルA1がセルB1と一致、 かつ、セルA1がセルC1と一致していた場合 は◯◯の処理を実行」となります。

これをマクロで記述すると

正しい例
if range(“A1”) = range(“B1”)  and   range(“A1”) = range(“C1”) then
   ここに◯◯の処理内容を書く
endif
となります。

気をつけましょう。

〜セルの値がエラーだった場合の条件〜

もしRange(“A1”)がエラーだった場合など、そもそもセルの値がエラーの場合の書き方も悩むポイントかと思います。

その場合はセルの値がエラーかどうかを判定して書くことにしましょう。

エラーかどうかの判定にはエクセル関数にもありますが、ISERRORを使用しましょう。

記述方法
if iserror(range(“A1”)) = TRUE then
   [ エラーの場合の処理 ]
endif

となります。

〜書き方のコツ〜

if文に限らずですが、「こう書くと直観的にわかりやすい」というものをお伝えします。

具体的にはセルの値の比較です。

例えば、セルA1とセルB1の値の大小を比較する場合
× : if range(“B1”) < range(“A1”) then

◯ : if range(“A1”) < range(“B1”) then

ほとんどの日本の方はAはBより左にあるということが潜在意識に入っている(ハズな)ので、セルの位置関係を意識した、◯の書き方が理想ですし、日本語の順番「セルA1が10より小さい場合など」を意識すると他人にとっても自分にとっても読みやすく、書きやすくなると思います。

是非参考にしてみてください。

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

%d人のブロガーが「いいね」をつけました。