エクセルマクロで、別シートのセル値をループするVBAコードをご紹介します。
このページのマクロコードは、コピペで使えます。
ぜひお試しください!
別シートのセル値をループ(For文)
以下のマクロを実行すると、別シートのセル値をループします。
Sub 別シートのセル値をループ()
Dim Ws As Worksheet
Dim i As Long
Dim LastRow As Long
Set Ws = Sheets("Sheet2")
LastRow = Ws.Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To LastRow
Debug.Print Cells(i, 1).Value
Next i
End Sub
マクロ実行前
「Sheet1」を開いた状態で、マクロを実行します。
マクロ実行後
別シートである「Sheet2」の値を取得できました。
イミディエイトウィンドウに取得結果が表示されました。
別シートのセル値をループ(For文_複数列)
以下のマクロを実行すると、別シートのセル値をループします。
Sub 別シートのセル値をループ()
Dim Ws As Worksheet
Dim i As Long
Dim j As Long
Dim LastRow As Long
Dim LastClm As Long
Set Ws = Sheets("Sheet2")
'最終行
LastRow = Ws.Cells(Rows.Count, 1).End(xlUp).Row
'最終列
LastClm = Ws.Cells(1, Columns.Count).End(xlToLeft).Column
For i = 1 To LastClm
For j = 1 To LastRow
Debug.Print Cells(j, i).Value
Next j
Next i
End Sub
マクロ実行前
「Sheet1」を開いた状態で、マクロを実行します。
マクロ実行後
別シートである「Sheet2」の値を取得できました。
イミディエイトウィンドウに取得結果が表示されました。
別シートのセル値をループ(ForEach文)
以下のマクロを実行すると、別シートのセル値をループします。
Sub 別シートのセル値をループ()
Dim Ws As Worksheet
Dim Rng As Range
Set Ws = Sheets("Sheet2")
For Each Rng In Ws.Range("A1:A10")
Debug.Print Rng.Value
Next
End Sub
マクロ実行前
「Sheet1」を開いた状態で、マクロを実行します。
マクロ実行後
別シートである「Sheet2」の値を取得できました。
イミディエイトウィンドウに取得結果が表示されました。
別シートのセル値をループ(ForEach文_複数列)
以下のマクロを実行すると、別シートのセル値をループします。
Sub 別シートのセル値をループ()
Dim Ws As Worksheet
Dim Rng As Range
Dim LastRow As Long
Dim LastClm As Long
Set Ws = Sheets("Sheet2")
'最終行
LastRow = Ws.Cells(Rows.Count, 1).End(xlUp).Row
'最終列
LastClm = Ws.Cells(1, Columns.Count).End(xlToLeft).Column
For Each Rng In Ws.Range(Cells(1, 1), Cells(LastRow, LastClm))
Debug.Print Rng.Value
Next
End Sub
マクロ実行前
「Sheet1」を開いた状態で、マクロを実行します。
マクロ実行後
別シートである「Sheet2」の値を取得できました。
イミディエイトウィンドウに取得結果が表示されました。
※行ごとに値を取得します。
別シートのセル値をループ(ForEach文_複数列)
以下のマクロを実行すると、別シートのセル値をループします。
Sub 別シートのセル値をループ()
Dim Ws As Worksheet
Dim Rng As Range
Dim Rng2 As Range
Dim LastRow As Long
Dim LastClm As Long
Set Ws = Sheets("Sheet2")
'最終行
LastRow = Ws.Cells(Rows.Count, 1).End(xlUp).Row
'最終列
LastClm = Ws.Cells(1, Columns.Count).End(xlToLeft).Column
For Each Rng In Ws.Range(Cells(1, 1), Cells(LastRow, LastClm)).Columns
For Each Rng2 In Range(Rng.Address)
Debug.Print Rng2.Value
Next
Next
End Sub
マクロ実行前
「Sheet1」を開いた状態で、マクロを実行します。
マクロ実行後
別シートである「Sheet2」の値を取得できました。
イミディエイトウィンドウに取得結果が表示されました。
※列ごとに値を取得します。
この記事がお役に立ちますと幸いです。

「プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA」
ExcelVBAでワンランクアップできる書籍
具体的で応用が利く技をたくさん掲載