Select CaseとFor~Next 決められた回数の繰り返し
条件分岐の繰り返し
For~Nextステートメント とSelect Case ステートメント
For~Nextで条件分岐の繰り返し処理を行う
5回、10回、20回のように、条件により処理を一定回数だけ行いたい場合は、For~Nextステートメント(For文)を使います。
その処理としてSelect Case ステートメントで多岐選択を行います。サンプルは成績表で、点数によって優良可不可の判定を行います。
(サンプルファイルは、こちらから 2013マクロ講座26回サンプルデータ)
点数によって優良可不可の判定を繰り返し For文
今回は、下図のように、5人の成績を判定します。
For~Nextステートメントの使い方
For~Nextステートメントの使い方
最初に、Forで繰り返し回数を宣言します。
繰り返し回数は、カウンタの変化範囲(開始値と終了値)で指定します。
最初に、Forで繰り返し回数を宣言します。
繰り返し回数は、カウンタの変化範囲(開始値と終了値)で指定します。
たとえば、「開始値が1,終了値が5」なら繰り返しは、5回。
「開始値が6、終了値が10」であっても繰り返し回数は5回です。
繰り返しの終了位置はNextで指定します。
「開始値が6、終了値が10」であっても繰り返し回数は5回です。
繰り返しの終了位置はNextで指定します。
For~Next が実行されると、カウンタの値が開始値から1ずつカウントアップされ、終了値に達すると繰り返しが終了します。
コードですが、
最初に、カウンタ変数を宣言します。変数名はなんでもいいのですが、
ここでは、習慣的にiとします。
(カウンタ変数をiでなく、たとえば、回数にしてもOKです。)
Dim i As Long
そして、次にアクティブセルを指定してやります。
Range("B3").Activate
最初に、カウンタ変数を宣言します。変数名はなんでもいいのですが、
ここでは、習慣的に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
ここまでが処理の中身で、終了値まで繰り返します。
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
ここまでが処理の中身で、終了値まで繰り返します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 までが実行されて終了です。
ActiveCell.Offset(1, 0).Activate までが実行されて終了です。
Offsetは、セル(範囲)の移動
コードの中でセルを移動するのに、Offsetを使いました。
ActiveCell.Offset(1, 0).Activate
このコードはアクティブセルから行方向に1、つまり1つ下のセルをアクティブにします。
ActiveCell.Offset(0, 1).Value = "優"
このコードは、アクティブセルから、列方向に1、つまり右どなりのセルの値を優にします。
今日の講義は以上です。お疲れ様でした。
ActiveCell.Offset(1, 0).Activate
このコードはアクティブセルから行方向に1、つまり1つ下のセルをアクティブにします。
ActiveCell.Offset(0, 1).Value = "優"
このコードは、アクティブセルから、列方向に1、つまり右どなりのセルの値を優にします。
今日の講義は以上です。お疲れ様でした。
おすすめコンテンツ