プログラムの肝! 条件分岐と繰り返しの基本文法とさまざまな書き方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のようになる。

  1. Option Explicit
  2. Sub ランクを付ける()
  3. Dim i As Integer
  4. For i = 5 To 12
  5. Select Case Range("C" & i).Value
  6. Case Is >= 90
  7. Range("D" & i).Value = "ランクA"
  8. Case Is >= 80
  9. Range("D" & i).Value = "ランクB"
  10. Case Is >= 70
  11. Range("D" & i).Value = "ランクC"
  12. Case Is >= 60
  13. Range("D" & i).Value = "ランクD"
  14. Case Is >= 50
  15. Range("D" & i).Value = "ランクE"
  16. Case Else
  17. Range("D" & i).Value = "ランクF"
  18. End Select
  19. Next
  20. 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だ。

  1. Sub 売上が50万以下の場合()
  2. Dim no As Long
  3. no = 5
  4. Do While Cells(no, 13) <> ""
  5. If Cells(no, 13).Value < 500000 Then
  6. Cells(no, 13).Interior.ColorIndex = 3
  7. End If
  8. no = no + 1
  9. Loop
  10. 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

HTML5�偽X 險倅コ九Λ繝ウ繧ュ繝ウ繧ー

譛ャ譌・譛磯俣

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

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

メールマガジン登録

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