次にSelect~Caseを使った複数の条件分岐について解説しよう。
条件が多い場合は、上記ElseIfよりも、この処理を使うと簡潔にマクロを書ける。構文は下記のようになる。
Select Case {元になる式}
Case {比較する式1}
'~ここに{元になる式}と{比較する式1}が一致する場合の処理を書く~
Case {比較する式2}
'~ここに{元になる式}と{比較する式2}が一致する場合の処理を書く~
……
Case {比較する式N}
'~ここに{元になる式}と{比較する式N}が一致する場合の処理を書く~
Case Else
'~ここに{元になる式}がどの式とも一致しなかった場合の処理を書く~
End Select
例えば、図8のような氏名別の英語の点数があったとしよう
「ランク」ボタンをクリックすると、「ランク」の欄に、「ランクA」から「ランクE」までの値が入るようにしてみよう。マクロはリスト6のようになる。
- Option Explicit
- Sub ランクを付ける()
- Dim i As Integer
- For i = 5 To 12
- Select Case Range("C" & i).Value
- Case Is >= 90
- Range("D" & i).Value = "ランクA"
- Case Is >= 80
- Range("D" & i).Value = "ランクB"
- Case Is >= 70
- Range("D" & i).Value = "ランクC"
- Case Is >= 60
- Range("D" & i).Value = "ランクD"
- Case Is >= 50
- Range("D" & i).Value = "ランクE"
- Case Else
- Range("D" & i).Value = "ランクF"
- End Select
- Next
- End Sub
「得点」のセルを繰り返し処理しながらSelect~Caseで条件分岐を行い、「ランク」ボタンをクリックすると点数に応じてランク付けされる。「ランク」ボタンには「ランクを付ける」マクロを登録しておく。
実行すると、図9のように表示される。
次に、条件が成立している間、処理を繰り返す、Do While~Loopについて解説しよう。これは、条件が成立している間、処理を繰り返す。構文は下記の通りだ。
Do While {条件}
'~ここに条件が成
書く~
Exit Do
Loop
図10のような売上金額の入ったデータがあったとする。
「売上が500,000円以下の場合」ボタンをクリックすると、ボタンのタイトルの金額であった場合、背景色が赤で塗りつぶされる。マクロはリスト7だ。
- Sub 売上が50万以下の場合()
- Dim no As Long
- no = 5
- Do While Cells(no, 13) <> ""
- If Cells(no, 13).Value < 500000 Then
- Cells(no, 13).Interior.ColorIndex = 3
- End If
- no = no + 1
- Loop
- End Sub
Do While~Loopを使って、5行目から13列(M)目に対して繰り返し処理を行う。繰り返し処理の中でセルの値が50万円以下の場合は、そのセルの背景色を赤で塗りつぶす。「no=no+1」はセルが空でない間、行を下りながら空のセルが見つかるまで処理を繰り返している。
「no=no+1」は変数noの数を1ずつ増加させている意味になる。ここでは、1行ずつ下に移動する意味になる。
実行すると、図11のようになる。
Copyright © ITmedia, Inc. All Rights Reserved.
HTML5�偽X 險倅コ九Λ繝ウ繧ュ繝ウ繧ー