Excel VBA | 「Cells × Range × Offset × Resize」応用テンプレ集

Excel VBA VBA
スポンサーリンク

Cells × Range × Offset × Resize を組み合わせると、動的にセル範囲を移動・拡張・縮小できるようになります。
実務で役立つ応用テンプレを整理しました。


基本操作

  1. 基準セルから範囲を拡張
Range("A1").Resize(3, 2).Value = "拡張範囲"   'A1から3行×2列
VB
  1. Cellsで範囲を拡張
Cells(2, 2).Resize(4, 3).Interior.Color = vbYellow   'B2から4行×3列
VB
  1. Offsetで移動+Resizeで拡張
Range("A1").Offset(1, 1).Resize(2, 2).Value = "移動+拡張"
VB

範囲指定応用

  1. 動的範囲を拡張
Dim rng As Range
Set rng = Range("B2").Resize(5, 4)   'B2から5行×4列
rng.Font.Bold = True
VB
  1. 範囲を移動して拡張
Range("A1:C3").Offset(2, 2).Resize(4, 5).Select
VB
  1. 変数で範囲+Resize
Dim r As Long, c As Long
r = 3: c = 2
Cells(r, c).Resize(6, 3).Interior.Color = vbGreen
VB

最終行・最終列応用

  1. 最終行まで拡張
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1").Resize(lastRow, 1).Select
VB
  1. 最終列まで拡張
Dim lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
Range("A1").Resize(1, lastCol).Select
VB
  1. 最終行+最終列まで拡張
Range("A1").Resize(lastRow, lastCol).Interior.Color = vbCyan
VB

コピー&ペースト応用

  1. 範囲を拡張してコピー
Range("A1").Resize(3, 3).Copy Destination:=Range("E1")
VB
  1. Offset+Resizeでコピー先を指定
Range("A1:C3").Copy Destination:=Range("A1").Offset(0, 5).Resize(3, 3)
VB

ループ処理+Resize

  1. 行ループで範囲拡張
Dim i As Long
For i = 1 To 5
    Cells(i, 1).Resize(1, 3).Value = "Row" & i
Next i
VB
  1. 列ループで範囲拡張
Dim j As Long
For j = 1 To 5
    Cells(1, j).Resize(3, 1).Value = "Col" & j
Next j
VB
  1. 二重ループで表範囲を拡張
Dim r As Long, c As Long
For r = 1 To 3
    For c = 1 To 3
        Cells(r, c).Resize(2, 2).Interior.Color = vbYellow
    Next c
Next r
VB

応用テクニック

  1. 基準セルから右下に拡張
Range("B2").Resize(5, 5).Interior.Color = vbRed
VB
  1. 範囲を移動して拡張
Range("A1").Offset(2, 2).Resize(10, 5).Borders.LineStyle = xlContinuous
VB
  1. 動的に「次の列範囲」を拡張
Dim col As Long
col = 2
Cells(1, col).Resize(10, 1).Interior.Color = vbBlue
VB
  1. 動的に「次の行範囲」を拡張
Dim row As Long
row = 5
Cells(row, 1).Resize(1, 5).Font.Bold = True
VB
  1. 表を拡張してコピー
Dim tbl As Range
Set tbl = Range("A1:C5")
tbl.Resize(tbl.Rows.Count + 2, tbl.Columns.Count + 1).Value = tbl.Value
VB
  1. Offset+Resizeで「表の右隣に新しい表を作成」
Dim tbl As Range
Set tbl = Range("A1:C5")
tbl.Offset(0, tbl.Columns.Count + 1).Resize(tbl.Rows.Count, tbl.Columns.Count).Value = tbl.Value
VB

実務での使い分けポイント

  • 固定範囲拡張 → Range(“A1”).Resize(行数,列数)
  • 動的範囲拡張 → Range(Cells(r1,c1), Cells(r2,c2)).Resize(…)
  • 移動+拡張 → Range(…).Offset(…).Resize(…)
  • 最終行・最終列 → Resize(lastRow,lastCol)

💡 この「Cells × Range × Offset × Resize」テンプレを押さえておけば、表の拡張・コピー・加工・動的処理まで自在に扱えます。

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