学習日:2024/07/16
参考書:ExcelVBA本格入門 技術評論社(著者 大村あつし)
7-1から7-2まで(P138-144)
【学習内容のまとめ】
-
For…Nextステートメントとは?
同一処理を何度も繰り返すことをループと呼ぶ
Dim i As Integer → カウンタ変数の宣言
For i = 1 To 10 → ループ回数の指定
MsgBox "メッセージを10回表示します”
Next i → Nextステートメントでカウンタ変数が加算されループ。カウンタ変数は省略可能
-
カウンタ変数の最低値とStepキーワード
For i = 3 To 10 → 3~10まで処理は8回繰り返される
For i = 1 To 10 Step 2 → カウンタ変数が2ずつ増加するので処理は5回繰り返される
For i = 10 To 1 Step -1 → カウンタ変数を1ずつ減少させてループすることもできる
1枚目のワークシートを残して残りすべてのワークシートを削除するステートメント
For i = Worksheets.Count To 2 Step -1 → シートを後ろか削除させるには、カウンタ変数を減少させながらループ
Worksheets(i).Delete
-
For…Nextステートメントの中でカウンタ変数を利用する
Dim i As Integer
Dim myWSCnt As Integer
myWSCnt = Worksheets.Count → 変数myWSCntにワークシートの数が代入
For i = 1 To myWSCnt → 1からワークシートの数だけループ
Worksheets(i).Name = "WORK” & i → ワークシートの名前が変更される
Next i
-
For…Nextステートメントの中で条件分岐する
Dim i As Integer
Dim myWSCnt As Integer
myWSCnt = Worksheets.Count
For i = 1 To myWSCnt → 1からワークシートの数だけループ
If Worksheets(i).Name = "Sheet4” Then → もしワークシートの名前がSheet4の時
Worksheets(i).Delete → そのワークシートを削除
Exit For → For...Nextステートメントから抜けて、Next i以降の処理に進む
End If
Next i
-
For Each…Nextステートメントでワークシートに対してループする
Dim mySheet As Worksheet → オブジェクト変数の宣言
For Each mySheet In Worksheets → For Each節の構文 For Each オブジェクト変数 In コレクション (コレクションの中にあるオブジェクトの数だけ処理を実行)
If mySheet.Name = ”Sheet4” Then
mySheet.Delete
Exit For
End If
Next mySheet → Nextステートメントによって次のオブジェクトを参照
-
For Each…Nextステートメントでセル範囲に対してループする
Dim myRange As Range → セルを表すRange型オブジェクトで定義
For Each myRange In Worksheets(2).Range(”A1:D10”) → セル範囲A1:D10を調べる
If myRange.Value >= 70 Then myRange.Interior.Color = vbYellow → セルの値が70以上の場合背景色を黄色にする
Next
※vbYellowは組み込み定数