【VBA】指定した範囲のセルの数だけ繰り返し処理をする【ループ】

VBAで
 ・指定した範囲のセルの数だけ
 ・繰り返し処理
ができます!

PR

VBAコード

ここでは例として
 ・シート「sample」上の
 ・セル「B3~D5」のセルの数だけ繰り返し処理
をします。
※セル「B3~D5」に設定されている値を、イミディエイトウィンドウへ出力します。

セル「B3~D5」に設定されている値
セル「B3~D5」に設定されている値
Option Explicit

Sub sample()
    
    Dim ws As Worksheet
    Dim startRange As range
    Dim address As String
    Dim arrAddress As Variant
    Dim startColumnAlphabet As String
    Dim startRow As Long
    Dim endRange As range
    Dim endColumnAlphabet As String
    Dim endRow As Long
    Dim range As range
    
    '対象シートを指定
    Set ws = Worksheets("sample")
    
    '開始セルを指定
    Set startRange = ws.range("B3")
    
    '開始セルの「列を示すアルファベット」を取得
    address = startRange.address(RowAbsolute:=True, ColumnAbsolute:=False)
    arrAddress = Split(address, "$")
    startColumnAlphabet = arrAddress(0)
    
    '開始セルの「行番号」を指取得
    startRow = startRange.Row
    
    '最終セルを指定
    Set endRange = ws.range("D5")
    
    '最終セルの「列を示すアルファベット」を取得
    address = endRange.address(RowAbsolute:=True, ColumnAbsolute:=False)
    arrAddress = Split(address, "$")
    endColumnAlphabet = arrAddress(0)
    
    '最終セルの「行番号」を取得
    endRow = endRange.Row
    
    '指定した範囲のセルの数だけ繰り返し
    For Each range In ws.range(startColumnAlphabet & startRow & ":" & endColumnAlphabet & endRow)
        Debug.Print range.Value
    Next
    
End Sub

以下3つを指定します。
・対象シート(17行目)
・開始セル(20行目)
・最終セル(31行目)

以下4つを取得します。
・開始セルの「列を示すアルファベット」(23~25行目)
・開始セルの「行番号」(28行目)
・最終セルの「列を示すアルファベット」(34~36行目)
・最終セルの「行番号」(39行目)

上記で取得した4つを使用して
 ・指定した範囲のセルの数だけ繰り返し処理
をします(42~44行目)。
セルに設定されている値を、イミディエイトウィンドウへ出力します。

PR

実行結果

「指定した範囲のセルの数だけ繰り返し処理」ができました。
※セル「B3~D5」に設定されている値を、イミディエイトウィンドウへ出力できました。

実行結果
PR

参考①

上記のVBAコードは以下の記事を参考にして作成しました。

●「列を示すアルファベット」を取得


PR

参考②

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「行番号」の取得
※「Rangeオブジェクト」の「Row」プロパティ


●For Eachステートメント



イミディエイトウィンドウへ出力


PR

参考③

シートの数だけ、繰り返し処理を行うこともできます。

詳細は以下の記事をご確認ください。