StudyLog

勉強の記録など。

ExcelVBA本格入門 Chapter7①

学習日: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ステートメントによって次のオブジェクトを参照

    ※その都度Setしているようなものなので、For Each…Nextステートメントの場合はSetステートメントは不要

  • 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は組み込み定数