Cells × Range × Offset × Resize × CurrentRegion を組み合わせると、表全体を動的に扱いながら移動・拡張・加工することができます。
実務で役立つ応用テンプレをまとめました。
基本操作
- 表全体を取得
Range("A1").CurrentRegion.Select
VB- 表全体を変数に格納
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Interior.Color = vbYellow
VBOffsetとの組み合わせ
- 表の右隣にコピー
Range("A1").CurrentRegion.Copy Destination:=Range("A1").CurrentRegion.Offset(0, Range("A1").CurrentRegion.Columns.Count + 1)
VB- 表の下にコピー
Range("A1").CurrentRegion.Copy Destination:=Range("A1").CurrentRegion.Offset(Range("A1").CurrentRegion.Rows.Count + 1, 0)
VBResizeとの組み合わせ
- 表を拡張(行追加)
Range("A1").CurrentRegion.Resize(Range("A1").CurrentRegion.Rows.Count + 2, Range("A1").CurrentRegion.Columns.Count).Select
VB- 表を拡張(列追加)
Range("A1").CurrentRegion.Resize(Range("A1").CurrentRegion.Rows.Count, Range("A1").CurrentRegion.Columns.Count + 2).Select
VBCellsとの組み合わせ
- 表の先頭セルを指定
Range("A1").CurrentRegion.Cells(1, 1).Value = "表の先頭"
VB- 表の最終セルを指定
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Cells(tbl.Rows.Count, tbl.Columns.Count).Value = "最終セル"
VB動的範囲処理
- 表の1列目を強調
Range("A1").CurrentRegion.Columns(1).Font.Bold = True
VB- 表の最終列を強調
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Columns(tbl.Columns.Count).Interior.Color = vbGreen
VB- 表の最終行を強調
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Rows(tbl.Rows.Count).Interior.Color = vbCyan
VB応用コピー&加工
- 表を右隣にコピー+加工
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Offset(0, tbl.Columns.Count + 1).Resize(tbl.Rows.Count, tbl.Columns.Count).Value = tbl.Value
tbl.Offset(0, tbl.Columns.Count + 1).Font.Bold = True
VB- 表を下にコピー+色付け
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Offset(tbl.Rows.Count + 1, 0).Resize(tbl.Rows.Count, tbl.Columns.Count).Value = tbl.Value
tbl.Offset(tbl.Rows.Count + 1, 0).Interior.Color = vbYellow
VBループ処理応用
- 表の各行を処理
Dim tbl As Range, r As Range
Set tbl = Range("A1").CurrentRegion
For Each r In tbl.Rows
r.Cells(1, 1).Value = "処理済"
Next r
VB- 表の各列を処理
Dim tbl As Range, c As Range
Set tbl = Range("A1").CurrentRegion
For Each c In tbl.Columns
c.Cells(1, 1).Value = "列処理"
Next c
VB高度な応用
- 表の右隣に新しい表を作成
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Offset(0, tbl.Columns.Count + 2).Resize(tbl.Rows.Count, tbl.Columns.Count).Value = tbl.Value
VB- 表の下に新しい表を作成
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Offset(tbl.Rows.Count + 2, 0).Resize(tbl.Rows.Count, tbl.Columns.Count).Value = tbl.Value
VB- 表の範囲を動的に拡張して加工
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Resize(tbl.Rows.Count + 5, tbl.Columns.Count + 2).Borders.LineStyle = xlContinuous
VB- 表の右隣に「集計列」を追加
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Offset(0, tbl.Columns.Count).Resize(tbl.Rows.Count, 1).Value = "集計"
VB- 表の下に「合計行」を追加
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Offset(tbl.Rows.Count, 0).Resize(1, tbl.Columns.Count).Value = "合計行"
VB実務での使い分けポイント
- 表全体を扱う → CurrentRegion
- 隣接セルにコピー → Offset
- 表を拡張 → Resize
- セル単位で操作 → Cells
- 部分強調 → Rows / Columns
💡 この「Cells × Range × Offset × Resize × CurrentRegion」テンプレを押さえておけば、表全体の動的処理・コピー・拡張・加工まで自在に扱えます。
