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 SubExit FunctionExit 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 "終了しました"