Excel VBA | Offset × Resize × ForEach の 黄金 100 パターン集

VBA
スポンサーリンク

ブロック処理(Resize 基本テンプレ集)

ここでは Resize を使った「範囲を拡張してまとめて処理する」基本パターンを整理します。
Offset と組み合わせると「任意の矩形を自由に切り出す」ことも可能です。


11. 3×3 の範囲を一括クリア

Range("B2").Resize(3, 3).ClearContents
VB

👉 B2 を基点に 3 行 × 3 列の範囲をまとめてクリア。


12. 5 行 × 2 列のブロックに色を付ける

Range("C5").Resize(5, 2).Interior.Color = vbYellow
VB

👉 C5 を基点に 5 行 × 2 列を黄色で塗りつぶし。


13. A1 を基点に 10 行 × 3 列をまとめてコピー

Range("A1").Resize(10, 3).Copy Destination:=Range("E1")
VB

👉 A1 から 10 行 × 3 列を右側の E1 にコピー。


14. データ範囲を自動 Resize で取得

Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1").Resize(lastRow, 1).Select
VB

👉 A列の最終行までを自動で範囲指定。


15. 最終列までの全列を Resize で捕まえる

Dim lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range("A1").Resize(1, lastCol).Interior.Color = vbGreen
VB

👉 1 行目の最終列までを範囲指定して色付け。


16. 表ヘッダ(1 行 × N 列)を操作

Dim lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range("A1").Resize(1, lastCol).Font.Bold = True
VB

👉 ヘッダ行を太字に。


17. 特定行から 4 行分だけ処理

Range("B10").Resize(4, 1).Interior.Color = vbCyan
VB

👉 B10 を基点に 4 行分を色付け。


18. いまのセルから上下 2 行だけ集計

Dim rng As Range
Set rng = ActiveCell.Offset(-2, 0).Resize(5, 1) ' 上2行+自分+下2行
MsgBox WorksheetFunction.Sum(rng)
VB

👉 アクティブセルを中心に上下 2 行を含めて合計。


19. 右 5 列のブロックを削除

ActiveCell.Offset(0, 1).Resize(1, 5).ClearContents
VB

👉 アクティブセルの右隣から 5 列分を削除。


20. Resize × Offset で任意の矩形を自由に切り出し

Range("C3").Offset(2, 1).Resize(4, 5).Interior.Color = vbRed
VB

👉 C3 を基点に「下へ2行・右へ1列」から始まる 4 行 × 5 列を赤く塗る。


✅ まとめ

  • Resize: 「範囲の大きさ」を指定する
  • Offset: 「基準位置」をずらす
  • 組み合わせると「任意の矩形を自由に操作」できる

💡 この 10 パターンをベースに、さらに「For Each」や「Dictionary」と組み合わせると 大量データの高速処理 に発展できます。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました