10日で習得!VBA入門⑦If Thenステートメント

VBA入門
スポンサーリンク

みなさん、こんにちは。今回はExcelマクロVBA入門の7回目です。

前回は、繰り返し処理最終行数の取得について紹介しました。

10日で習得!VBA入門⑥繰り返し処理と最終行数取得
今回は繰り返し処理と最終行数の取得について紹介します。 記事を読み進めていくことで、マクロVBAを使って同一シート内のデータ処理を自動化するために必要なVBAスキルを習得できます。VBA初学者が添付のレジュメを使って一緒に手を動かしながらVBAコードを記述していくことで、自分のペースでじっくり確実に習得することができます。

今回は、If Thenステートメントについて紹介します。

学習用Excelファイルのダウンロードはこちらから↓

マクロVBA入門講座|ワイエム
「ブログ記事とオリジナルレジュメを使ってマクロVBAの基礎を学ぼう!!」ということで、ブログにてVBA基礎の習得を目指した記事をアップしていきます。最終目標は”私がVBA習得のきっかけとなった”YouTubeチャンネル:Mr.ラビットのにょきにょきパソコン講座にて題材となってパズルを作成することです!!YouTubeを...
スポンサーリンク

If Thenステートメント

ワークシート関数のIF関数は論理式を使って、条件を満たす場合の処理、満たさない場合の処理を分けることができました。

VBAにおいても、If Thenステートメントを使って同じことが可能になります。

条件を満たすかによって実行する操作を分けます。下記のように記述します。

IF 条件式 Then
  操作A    ’条件を満たす場合に行う操作
Else 
  操作B    ’条件を満たさない場合に行う操作
End If

IFの後に条件を指定して、条件を満たす場合は「操作A」条件を満たさない場合は「操作B」を実行します。

条件を満たさない場合に何も実行しない場合は、「Else」と「操作B」は省略

IF 条件式 Then
  操作    ’条件を満たした場合の操作
End If

条件式に使われる比較演算子

条件式には比較演算子を使います。

比較演算子とは、2つの値を比較した結果を「True」または「False」で返します。

比較演算子意味例文
=   等しいRange(“A1”).Value = 1 
(A1セルが「1」の場合はTrue,そうでない場合はFalse)
より大きいRange(“A1”).Value > 1 
A1セルが「1」より大きい場合はTrue,そうでない場合はFalse)
>= 以上 Range(“A1”).Value >= 1 
(A1セルが「1」以上の場合はTrue,そうでない場合はFalse)
より小さいRange(“A1”).Value < 1 
(A1セルが「1」より小さい場合はTrue,そうでない場合はFalse
<=以下Range(“A1”).Value <= 1 
(A1セルが「1」以下の場合はTrue,そうでない場合はFalse)
<>等しくないRange(“A1”).Value <> 1 
(A1セルが「1」でない場合はTrue,そうでない場合はFalse)

演習問題(If Then)

レジュメ:「11.演習_IF」シート使用

演習①:「数学」が60点以上は合格、それ以外は不合格を「判定」の列に入れます。

Sub 条件分岐()
    Dim i As Long
    For i = 7 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 2) >= 60 Then
            Cells(i, 3) = "合格"
        Else
            Cells(i, 3) = "不合格"
        End If
    Next
End Sub

ElseIfを使った複数条件分岐

複数の条件を設定したい場合は、ElseIf文を使用します。

ElseIf文を使用することによって3つ以上の処理を分岐させることが可能になります。

下記のように記述します。

IF 条件式1 Then
	操作A   ’条件1を満たす場合に行う操作
ElseIf 条件式2 Then
	操作B   ’条件1は満たさず、条件2を満たす場合に行う操作
Else
	操作C   ’条件1と2を満たさない場合に行う操作
End If

条件1を満たす場合は「操作A」

条件1を満たさず、条件2を満たす場合は「操作B」

条件1と2を満たさない場合は「操作C」を実行します。

演習問題(ElseIf)

レジュメ:「11.演習_IF」シート使用

演習②:「数学」が80点以上は◎、60点以上は〇、それ以外は×を「判定」の列に入れます。

Sub 条件分岐_2()
    Dim i As Long
    For i = 23 To Cells(Rows.Count, 1).End(xlUp).Row
        If Cells(i, 2) >= 80 Then
            Cells(i, 3) = "◎"
        ElseIf Cells(i, 2) >= 60 Then
            Cells(i, 3) = "○"
        Else
            Cells(i, 3) = "×"
        End If
    Next
End Sub

まとめ

If Thenステートメントについて紹介しました。

次回は、いよいよパズルを使った演習問題に入っていきます。

コメント

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