Excel VBAスタンダード 公式テキスト 6章 ステートメント
6-1.SelectCaseステートメント
繰り返しや分岐等、マクロの実行を成業する命令がステートメントです。マクロでは、そうした制御が不可欠です。しかし、ほとんどのステートメントはマクロ記録で記録されませんので、自分で学習しなければなりません
- なるほど。
Option Explicit Sub Macro1() ' ' Macro1 Macro ' If IsDate(Range("A1").Value) = True Then Select Case Format(Range("A1").Value, "aaa") Case "月", "水", "金" Range("B1").Value = "可燃ごみ" Case "火" Range("B1").Value = "可燃ごみ" Case Else Range("B1").Value = "ごみは出せません" End Select End If ' End Sub
- Caseに複数の条件を設定したい時
Case 1,3,5
- 1か3か5の時
Case 10 To 20
- 10から20のあいだ
- Case条件で、「値」に指定した評価条件を比較する時
Case Is < 30
- 30以下の場合
6-2.Do...Loopステートメント
- 繰り返しの前で条件を判定する
Do 条件 処理 Loop
- 繰り返しの後で条件を判定する
Do 処理 Loop 条件
While
- 条件が正しい間繰り返す
Until
- 条件が正しくないときに繰り返す
Option Explicit Sub Macro1() ' ' Macro1 Macro ' Dim n As Long n = 1 Do While Cells(n, 1) <> "" Cells(n, 2).Value = Cells(n, 1).Value * 2 n = n + 1 Loop ' End Sub
6-3.For Each...Nextステートメント
- グループのメンバを1つずつ順番に取り出して操作
- これはPerlっぽいというか、そのものだ・・・わかる!
' ワークシート名をmsgboxで表示する Dim ws As Worksheet For Each ws In Worksheets MsgBox ws.Name Next ws
' A1からA3までのフォントの色を赤くする Dim c For Each c In Range("A1:A3") c.Font.ColorIndex = 3 Next c
6-4.Exitステートメント
Exit Sub
Exit Function
Exit For
- Forループの中で使うことで、Forループを抜ける
- 'Exit Do'
' A1~A3、A5,A6セルに数字を入れる(A4セルは空) ' Exit Subでプロシージャが終了するのでMsgboxは表示されない Dim i As Long For i = 1 To 6 If Cells(i, 1).Value = "" Then Exit Sub Else Cells(i, 1).Font.ColorIndex = 3 End If Next i MsgBox "終了しました"
' A1~A3、A5,A6セルに数字を入れる(A4セルは空) ' Exit ForでForループを抜けるが、プロシージャが ' 終了するわけではないので、Msgboxが表示される Dim i As Long For i = 1 To 6 If Cells(i, 1).Value = "" Then Exit For Else Cells(i, 1).Font.ColorIndex = 3 End If Next i MsgBox "終了しました"
' A1~A3、A5,A6セルに数字を入れる(A4セルは空) ' Exit DoでDo..Whileループを抜けるが、プロシージャが ' 終了するわけではないので、Msgboxが表示される Dim n As Long Do n = n + 1 If Cells(n, 1).Value = "" Then Exit Do Else Cells(n, 1).Font.ColorIndex = 3 End If Loop While n < 100 MsgBox "終了しました"