Categories: VBA入門

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

みなさん、こんにちは。今回は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ステートメントについて紹介しました。

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

y-naka

Recent Posts

FileSystemObjectで自動連番付与設定

FileSystemObjec…

4週間 ago

フォルダ自動作成とファイル保存(コピーを保存)

シートに予め入力されたデータを…

4週間 ago

ユーザーフォームを使ったレコード抽出方法-基本-

ユーザーフォームを使って、デー…

1か月 ago

ユーザーフォームとコンボボックスの値の取得

コンボボックスの値の取得方法を…

2か月 ago

VBAユーザーフォームとコンボボックス

ユーザーフォームを使って、デー…

3か月 ago

VBA配列を使ったデータ転記方法まとめ

私が業務でよく行っているダウン…

3か月 ago