条件分岐の繰り返し

Select Caseを使って複数の条件分岐をする
Select Caseを使って複数の条件分岐をする

For~Nextステートメント とSelect Case ステートメント

For~Nextで条件分岐の繰り返し処理を行う

5回、10回、20回のように、条件により処理を一定回数だけ行いたい場合は、For~Nextステートメント(For文)を使います。
その処理としてSelect Case ステートメントで多岐選択を行います。サンプルは成績表で、点数によって優良可不可の判定を行います。
(サンプルファイルは、こちらから 2013マクロ講座26回サンプルデータ

点数によって優良可不可の判定を繰り返し For文

今回は、下図のように、5人の成績を判定します。


For~Nextステートメントの使い方

For~Nextステートメントの使い方
最初に、Forで繰り返し回数を宣言します。
繰り返し回数は、カウンタの変化範囲(開始値と終了値)で指定します。
たとえば、「開始値が1,終了値が5」なら繰り返しは、5回。
「開始値が6、終了値が10」であっても繰り返し回数は5回です。
繰り返しの終了位置はNextで指定します。
For~Next が実行されると、カウンタの値が開始値から1ずつカウントアップされ、終了値に達すると繰り返しが終了します。
コードですが、
最初に、カウンタ変数を宣言します。変数名はなんでもいいのですが、 ここでは、習慣的にiとします。
(カウンタ変数をiでなく、たとえば、回数にしてもOKです。)
Dim i As Long

そして、次にアクティブセルを指定してやります。
Range("B3").Activate

次に、For~Next を使って、5回の処理を行います。
For i = 1 To 5

続いて、25回で使ったSelect Caseで、点数による条件分岐をして

Select Case Selection.Value
 Case Is >= 80
 ActiveCell.Offset(0, 1).Value = "優"
 Case Is >= 70
 ActiveCell.Offset(0, 1).Value = "良"
 Case Is >= 60
 ActiveCell.Offset(0, 1).Value = "可"
 Case Else
 ActiveCell.Offset(0, 1).Value = "不可"
End Select


下のセルをアクティブにして
ActiveCell.Offset(1, 0).Activate

Next
ここまでが処理の中身で、終了値まで繰り返します。


Sub 成績評価()
  Dim i As Long
  Range("B3").Activate
  For i = 1 To 5
    Select Case Selection.Value
      Case Is >= 80
        ActiveCell.Offset(0, 1).Value = "優"
      Case Is >= 70
        ActiveCell.Offset(0, 1).Value = "良"
      Case Is >= 60
        ActiveCell.Offset(0, 1).Value = "可"
      Case Else
        ActiveCell.Offset(0, 1).Value = "不可"
    End Select
  ActiveCell.Offset(1, 0).Activate
   Next
End Sub
マクロを実行すると、5回めの
ActiveCell.Offset(1, 0).Activate までが実行されて終了です。

Offsetは、セル(範囲)の移動

コードの中でセルを移動するのに、Offsetを使いました。
ActiveCell.Offset(1, 0).Activate
このコードはアクティブセルから行方向に1、つまり1つ下のセルをアクティブにします。
ActiveCell.Offset(0, 1).Value = "優"
このコードは、アクティブセルから、列方向に1、つまり右どなりのセルの値を優にします。


次のページでは、表が大きく長い場合に、自動的に最終行を取得して、処理を実行するためのコードに変更してみましょう。