プログラムの肝! 条件分岐と繰り返しの基本文法とさまざまな書き方Excelマクロ/VBAで始める業務自動化プログラミング入門(6)(3/4 ページ)

» 2016年08月10日 05時00分 公開
[薬師寺国安PROJECT KySS]

Select〜Caseを使った、条件が多い場合の条件分岐

 次にSelect〜Caseを使った複数の条件分岐について解説しよう。

 条件が多い場合は、上記ElseIfよりも、この処理を使うと簡潔にマクロを書ける。構文は下記のようになる。

Select〜Case構文

Select Case {元になる式}

 Case {比較する式1}

  '〜ここに{元になる式}と{比較する式1}が一致する場合の処理を書く〜

 Case {比較する式2}

  '〜ここに{元になる式}と{比較する式2}が一致する場合の処理を書く〜

……

 Case {比較する式N}

  '〜ここに{元になる式}と{比較する式N}が一致する場合の処理を書く〜

 Case Else

  '〜ここに{元になる式}がどの式とも一致しなかった場合の処理を書く〜

End Select


 例えば、図8のような氏名別の英語の点数があったとしよう

図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
リスト6 ランクを付ける

 「得点」のセルを繰り返し処理しながらSelect〜Caseで条件分岐を行い、「ランク」ボタンをクリックすると点数に応じてランク付けされる。「ランク」ボタンには「ランクを付ける」マクロを登録しておく。

 実行すると、図9のように表示される。

図9 英語の得点に応じてランク付けされた

条件が成立している間、処理を繰り返すDo While〜Loop

 次に、条件が成立している間、処理を繰り返す、Do While〜Loopについて解説しよう。これは、条件が成立している間、処理を繰り返す。構文は下記の通りだ。

Do While〜Loop構文

Do While {条件}

 '〜ここに条件が成

書く〜

 Exit Do

Loop


 図10のような売上金額の入ったデータがあったとする。

図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
リスト7 売上が50万円以下の場合の処理

 Do While〜Loopを使って、5行目から13列(M)目に対して繰り返し処理を行う。繰り返し処理の中でセルの値が50万円以下の場合は、そのセルの背景色を赤で塗りつぶす。「no=no+1」はセルが空でない間、行を下りながら空のセルが見つかるまで処理を繰り返している。

 「no=no+1」は変数noの数を1ずつ増加させている意味になる。ここでは、1行ずつ下に移動する意味になる。

 実行すると、図11のようになる。

図11 売上金額が50万円以下だと背景色が赤で塗りつぶされている

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
Microsoft & Windows最前線2024
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。