おひとりさまプログラミング

無料で学べるブログラミング学習サイト

Excel VBA講座【初級編】サンプル問題|For Next文を用いた判定プログラム

f:id:sayo0425tan:20210131191242p:plain

Excel VBA初級編のサンプル問題です。

今回用意した問題は、For Next文(その中にIFの条件式も追加)を用いた判定プログラムになります。

受験者の得点が表記されていない箇所があります。全てが表記されずに判定ボタンを押すとエラーメッセージが出力され、全て表記されると「合格」「不合格」を結果欄に表示させるプログラムになります。


f:id:sayo0425tan:20210131195545p:plain
【 初心者から財務プロまで 】エクセルで学ぶビジネス・シミュレーション講座 マスターコース

ではVBEを開いて下さい。
プログラムは標準モジュールに記載します。

Sub 合否判定()

    ' C2からC11のセルで、未記入("")がないかチェック。
    ' あったら"セルが未記入です"とMagBoxで表示する。

    Dim row As Long  '行を示す変数   
    For row = 2 To 11
      If Cells(row, 3) = "" Then
        MsgBox "C" & row & "セルが未記入です" & vbCrLf & "処理を中断します"
        Exit Sub
      End If
    Next row

End Sub

得点の入力箇所はC2からC11のセル。
C列は固定にして、行数が2行目から11行目まで変化するので、行数は変数に。
For文で変数rowを2から11まで代入し、For文の中身の処理をループさせる処理。
""で空白を表し、条件にあてはまれば、つまり空白であればメッセージが出力される処理になります。


空白でない条件がクリアされると次の処理に移ります。

Sub 合否判定()

    ' C2からC11のセルで、未記入("")がないかチェック。
    ' あったら"セルが未記入です"とMagBoxで表示する。

    Dim row As Long  '行を示す変数   
    For row = 2 To 11
      If Cells(row, 3) = "" Then
        MsgBox "C" & row & "セルが未記入です" & vbCrLf & "処理を中断します"
        Exit Sub
      End If
    Next row

    ' C2からC11のセルの値が70以上ならD列のセルに"合格"
    ' そうでないならD列のセルに"不合格"
    
    For row = 2 To 11
      If Cells(row, 3) >= 70 Then
        Cells(row, 4) = "合格"
      Else
        Cells(row, 4) = "不合格"
      End If
    Next row

End Sub

If Cells(row, 3) >= 70 Then ⇒70以上ならば
Cells(row, 4) = "合格" ⇒合格
Else ⇒70以上でなければ
Cells(row, 4) = "不合格" ⇒不合格

プログラムの記述は以上になります。


あとはボタンの配置です。

f:id:sayo0425tan:20210131222311p:plain

f:id:sayo0425tan:20210131222451p:plain

ボタンは適当な大きなに指定します。

f:id:sayo0425tan:20210131222710p:plain
「合否判定」を指定してOKをクリックします。
あとはボタンの名称を変更すれば完了になります。

以上になります。これからも問題は追加していく予定です。宜しくお願いします。

f:id:sayo0425tan:20210131195545p:plain
【 初心者から財務プロまで 】エクセルで学ぶビジネス・シミュレーション講座 マスターコース