Excel VBAのIf文で文字列や空白を判定する
Excel VBAのIf文では、数値だけでなく、セルに入力されている「文字列」や「空白」を条件にして処理を変えることができます。
たとえば、「完了と入力されていたら○を入力する」「セルが空白なら未入力と表示する」といった処理が可能です。
この記事では、If文を使って文字列の一致・不一致や、空白・空白ではないセルを判定する方法を、練習用ファイルを使って一緒にやってみましょう!
ダウンロードしたファイルは、通常のExcel形式(.xlsx)になっています。
そのままマクロを書いて保存すると、せっかく書いたコードがすべて消えてしまいます!
💡練習用ファイルを使う前の準備
- ファイルをダウンロードして開く
- マクロ有効ブック(.xlsm)形式で保存し直す
If文で文字列が一致するか判定する
まずは、セルに入力されている文字列が指定した文字列と一致するか判定してみましょう。
ここでは、A2セルの進捗が「完了」の場合に、B2セルへ「○」を入力します。
文字列が一致するか判定するコード
If Range("A2") = "完了" Then
Range("B2") = "○"
End Ifコードの解説
If Range(“A2”) = “完了” Then
A2セルに入力されている文字列が「完了」と一致するかどうかを判定します。
文字列を条件として指定する場合は、判定する文字列を「 ” 」(ダブルクォーテーション)で囲みます。
Range(“B2”) = “○”
A2セルの文字列が「完了」と一致した場合、B2セルに「○」を入力します。
条件に一致しなかった場合は、この処理は実行されません。
End If
End IfでIf文を終了します。
If文で文字列が一致しない場合を判定する
指定した文字列と一致しないことを条件にしたい場合は「<>」を使用します。
ここでは、A2セルが「完了」ではない場合に、B2セルへ「未完了」と入力するコードを入れてみましょう。
練習用ファイルのA2セルに「作業中」と入れてください。
文字列が一致しない場合を判定するコード
If Range("A2") <> "完了" Then
Range("B2") = "未完了"
End Ifコードの解説
If Range(“A2”) <> “完了” Then
<> は「等しくない」という意味の比較演算子です。
A2セルに入力されている文字列が「完了」と一致しない場合、Then以降の処理へ進みます。
Range(“B2”) = “未完了”
A2セルが「完了」ではない場合、B2セルに「未完了」と入力します。
End If
End IfでIf文を終了します。
If文で空白セルを判定する
セルに何も入力されていないことを条件にしたい場合は、空の文字列 「””」と比較します。
ここでは、A2セルが空白の場合に、B2セルへ「未入力」と入力するコードを入れてみましょう。
練習用ファイルA2セルを空白にしてください。
空白セルを判定するコード
If Range("A2") = "" Then
Range("B2") = "未入力"
End Ifコードの解説
If Range(“A2”) = “” Then
A2セルの内容と空の文字列「””」が等しいかどうかを判定します。
A2セルが空白の場合は、Then以降の処理へ進みます。
Range(“B2”) = “未入力”
A2セルが空白の場合、B2セルに「未入力」と入力します。
End If
End IfでIf文を終了します。
If文で空白ではないセルを判定する
反対に、セルに何か入力されていることを条件にしたい場合は、「<>””」を使用します。
ここでは、A2セルが空白ではない場合に、B2セルへ「入力済」と入力するコードを入れてみましょう。
練習用ファイルのA2セルに「完了」と入れてください。
空白ではないセルを判定するコード
If Range("A2") <> "" Then
Range("B2") = "入力済"
End Ifコードの解説
If Range(“A2”) <> “” Then
A2セルの内容が空の文字列「””」と等しくないかどうかを判定します。
A2セルに何か入力されている場合は、Then以降の処理へ進みます。
Range(“B2”) = “入力済”
A2セルが空白ではない場合、B2セルに「入力済」と入力します。
End If
End IfでIf文を終了します。
文字列や空白を判定するときの書き方
今回使用した条件をまとめると、次のようになります。
| 判定する条件 | 記述例 |
|---|---|
| 「完了」と一致する | Range(“A2”) = “完了” |
| 「完了」と一致しない | Range(“A2”) <> “完了” |
| 空白である | Range(“A2”) = “” |
| 空白ではない | Range(“A2”) <> “” |
文字列を指定する場合は “完了” のようにダブルクォーテーションで囲み、空白を判定する場合は中に何も記述しない「””」を使用します。
まとめ
Excel VBAのIf文では、セルに入力されている文字列や空白を条件にして処理を変えることができます。
「=」 を使えば文字列の一致や空白、「<>」 を使えば文字列の不一致や空白ではないことを判定できます。
入力内容によって処理を変えたい場合に使用する機会が多いため、数値の判定とあわせて覚えておくと便利です。
次回は、And・Orを使って複数の条件を組み合わせる方法を一緒に見ていきましょう。




