VBA初心者必見!IF文と繰り返し処理でマクロをレベルアップしよう

でんちゃん
でんちゃん

マクロを使い始めたばかりだと、「もっと複雑な処理を自動化したいな…」と思うことがありませんか?

そんな時に役立つのが、今回ご紹介する「条件分岐」と「繰り返し処理」です!

そもそも「条件分岐」と「繰り返し処理」ってなに?

でんちゃん
でんちゃん

まずは、この2つの基本的な考え方から見ていきましょう。

条件分岐」とは、「もし〇〇だったら、この処理をしてね」というように、条件によって実行する処理を分けることです。

例えば、「テストの点数が60点以上だったら『合格』、そうじゃなかったら『不合格』と表示する」といった処理がこれにあたります。

一方、

繰り返し処理」は、同じ処理を何度も自動で実行することです。

たとえば、「100人分の点数をチェックして、全員の合否を判定する」といった場合に、いちいち1人ずつ手作業でマクロを実行していたら大変ですよね。そんなときに、繰り返し処理を使えば、たった一度のマクロ実行で全員分を一気に処理できます。

【入門編】VBAの条件分岐「IF文」の基本を学ぼう

VBAで条件分岐を行うには、主にIF文を使います。

でんちゃん
でんちゃん

IF文には、いくつかの書き方があるので、それぞれ見ていきましょう。

シンプルなIF文「IF…Then」

最も基本的なIF文です。

もし〇〇という条件が満たされたら、この処理を実行する」という構文です。

VB.Net

‘ 基本構文
If 条件式 Then 処理

【使用例】

セルA1の値が100だったら、「A1の値は100です」というメッセージを表示するマクロ

VB.Net

Sub SimpleIfStatement()
If Range(“A1”).Value = 100 Then MsgBox “A1の値は100です”
End Sub

入力例
出力結果

もしもに備える「IF…Then…Else」

もし〇〇だったらこの処理、そうじゃなかったら(それ以外なら)別の処理」というように、2つの選択肢を用意する時に使います。

VB.Net

‘ 基本構文
If 条件式 Then
条件を満たした時の処理
Else
条件を満たさなかった時の処理
End If

【使用例】

先ほどの例に、「そうじゃなかったら」の処理を追加してみましょう。

VB.Net

Sub IfElseStatement()
If Range(“A1”).Value = 100 Then
MsgBox “A1の値は100です”
Else
MsgBox “A1の値は100ではありません”
End If
End Sub

入力例
出力結果

複数の条件を判定する「IF…Then…ElseIf…Else」

条件が3つ以上ある場合は、ElseIfを使って条件をどんどん追加できます。

VB.Net

‘ 基本構文
If 条件式1 Then
条件1を満たした時の処理
ElseIf 条件式2 Then
条件2を満たした時の処理
Else
すべての条件を満たさなかった時の処理
End If

【使用例】

テストの点数に応じて評価を変えるマクロです。

  • 80点以上:優
  • 60点以上80点未満:良
  • 60点未満:可

VB.Net

Sub TestScoreEvaluation()
Dim score As Integer
score = Range(“A2”).Value

If score >= 80 Then
Range(“B2”).Value = “優”
ElseIf score >= 60 Then
Range(“B2”).Value = “良”
Else
Range(“B2”).Value = “可”
End If
End Sub

入力例
出力結果

IF文に必須!比較演算子を使いこなそう

IF文の「条件式」には、必ず比較演算子を使います。

でんちゃん
でんちゃん

これは、2つの値を比較して、その結果が正しいか(True)または正しくないか(False)を判定するための記号です。

演算子意味例文
=等しいA = 10
<>等しくないB <> “Hello”
>より大きいC > 50
<より小さいD < 10
>=以上
(より大きいか、等しい)
E >= 60
<=以下
(より小さいか、等しい)
F <= 100


【実践編】IF文を使ってテストの合否を判定しよう

でんちゃん
でんちゃん

ここからは、実際に表を使ってマクロを作成してみましょう。

以下のテスト結果の表があります。

テスト結果表

この表の点数を見て、60点以上だったら「合格」60点未満だったら「不合格」と、C列に入力するマクロを作ります。

VB.Net

Sub PassFailJudge()
‘ 点数が入力されているセル(B2)を取得
Dim score As Integer
score = Range(“B2”).Value

‘ IF文で合否を判定し、結果をC2に入力
If score >= 60 Then
Range(“C2”).Value = “合格”
Else
Range(“C2”).Value = “不合格”
End If
End Sub

入力例

このマクロを実行すると、田中さんの点数(75点)を見て、C2セルに「合格」と表示されます。

出力結果

しかしこのままでは、他の人の合否を判定するには、手動でセルの指定(Range(“B2”)の部分)を変えなければいけません。

でんちゃん
でんちゃん

ここで登場するのが「繰り返し処理」です!


【応用編】繰り返し処理でマクロを自動化!

でんちゃん
でんちゃん

同じ処理を何度も行う時に、繰り返し処理は欠かせません。VBAにはいくつかの繰り返し処理がありますが、ここではよく使われる2つをご紹介します。

決まった回数繰り返す「For Next文」

〇〇回、この処理を繰り返してね」と、繰り返す回数を指定する時に使います。

VB.Net

‘ 基本構文
For カウンター変数 = 開始値 To 終了値
繰り返したい処理
Next カウンター変数

先ほどの合否判定マクロを、このFor Next文を使って修正してみましょう。

5人分のデータを自動で処理できるようにします。

VB.Net

Sub PassFailJudgeLoop()
‘ 行を数えるための変数
Dim i As Integer

‘ 2行目から6行目まで繰り返す
For i = 2 To 6
‘ i行目のB列(点数)を取得
Dim score As Integer
score = Cells(i, “B”).Value

‘ IF文で合否を判定し、i行目のC列に入力
If score >= 60 Then
Cells(i, “C”).Value = “合格”
Else
Cells(i, “C”).Value = “不合格”
End If
Next i
End Sub

入力例

このコードを実行すると、iが2から始まり、6になるまで、5回繰り返します。

  1. i = 2:2行目のデータを処理
  2. i = 3:3行目のデータを処理
  3. i = 4:4行目のデータを処理
  4. i = 5:5行目のデータを処理
  5. i = 6:6行目のデータを処理
出力結果
でんちゃん
でんちゃん

このように、iという変数が自動的に増えていくことで、1人ずつ手作業で指定しなくても、全員の合否を自動判定することができます!

条件が満たされるまで繰り返す「Do Loop文」

〇〇という条件が満たされるまで、この処理を繰り返してね」と、繰り返す回数ではなく、終了する条件を指定する時に使います。

VB.Net

‘ 基本構文
Do While 条件式
繰り返したい処理
Loop

または

VB.Net

Do
繰り返したい処理
Loop While 条件式

など、いくつかの書き方があります。

【使用例】

データが入力されている最後の行まで合否判定を繰り返すマクロです。

VB.Net

Sub PassFailJudgeDoLoop()
‘ 行を数えるための変数
Dim i As Integer
i = 2 ‘ 2行目からスタート

‘ B列の値が空になるまで繰り返す
Do While Cells(i, “B”).Value <> “”
‘ IF文で合否を判定し、i行目のC列に入力
If Cells(i, “B”).Value >= 60 Then
Cells(i, “C”).Value = “合格”
Else
Cells(i, “C”).Value = “不合格”
End If

‘ 次の行へ移動
i = i + 1
Loop
End Sub

入力例

このマクロのポイントは、i = i + 1 という部分です。

出力結果
でんちゃん
でんちゃん

繰り返し処理が終わるたびにiの値を1ずつ増やし、次の行へ移動するように指示しています。これにより、データが続く限り自動で処理を実行し、最後に空のセルにたどり着いた時に処理が終了します。


まとめ

でんちゃん
でんちゃん

今回は、VBAの条件分岐(IF文)と繰り返し処理(For Next文、Do Loop文)について解説しました。

  • IF文は、「もし〇〇だったら、この処理」というように、条件によって処理を分けることができる
  • 繰り返し処理は、同じ処理を何度も自動で実行することができる
  • この2つを組み合わせれば、より複雑で効率的なマクロが作れる

この知識を活かせば、手作業でやっていた面倒なデータ処理を、一瞬で終わらせることができるようになりますよ。

VBAお勧め本9選

でんちゃん
でんちゃん

これからVBAの勉強をしていきたい方やVBAを業務で使ってレベルを上げていきたい方などレベル別にお勧めの本を9つご紹介しています!

気になる方は下記の記事をご覧ください!

この記事を書いた人
でんちゃん

一児の父。人事として6年、採用・教育・労務・人事制度などを経験してきました。これまで200名ほどの方と面接を実施してきたので就職・転職に関するノウハウがあります。またExcelを用いたデータ分析が得意です。
娘が生まれ日々のすさまじい成長を目の当たりにしています。
人事やExcel、子育てに関してのお役立ち情報を伝えるブログを作っていきます!

でんちゃんをフォローする
Excel
シェアする
でんちゃんをフォローする

コメント

タイトルとURLをコピーしました