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

Excel VBA VBA
スポンサーリンク

Cells × Range × Offset × Resize × CurrentRegion を組み合わせると、表全体を動的に扱いながら移動・拡張・加工することができます。
実務で役立つ応用テンプレをまとめました。


基本操作

  1. 表全体を取得
Range("A1").CurrentRegion.Select
VB
  1. 表全体を変数に格納
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Interior.Color = vbYellow
VB

Offsetとの組み合わせ

  1. 表の右隣にコピー
Range("A1").CurrentRegion.Copy Destination:=Range("A1").CurrentRegion.Offset(0, Range("A1").CurrentRegion.Columns.Count + 1)
VB
  1. 表の下にコピー
Range("A1").CurrentRegion.Copy Destination:=Range("A1").CurrentRegion.Offset(Range("A1").CurrentRegion.Rows.Count + 1, 0)
VB

Resizeとの組み合わせ

  1. 表を拡張(行追加)
Range("A1").CurrentRegion.Resize(Range("A1").CurrentRegion.Rows.Count + 2, Range("A1").CurrentRegion.Columns.Count).Select
VB
  1. 表を拡張(列追加)
Range("A1").CurrentRegion.Resize(Range("A1").CurrentRegion.Rows.Count, Range("A1").CurrentRegion.Columns.Count + 2).Select
VB

Cellsとの組み合わせ

  1. 表の先頭セルを指定
Range("A1").CurrentRegion.Cells(1, 1).Value = "表の先頭"
VB
  1. 表の最終セルを指定
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Cells(tbl.Rows.Count, tbl.Columns.Count).Value = "最終セル"
VB

動的範囲処理

  1. 表の1列目を強調
Range("A1").CurrentRegion.Columns(1).Font.Bold = True
VB
  1. 表の最終列を強調
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Columns(tbl.Columns.Count).Interior.Color = vbGreen
VB
  1. 表の最終行を強調
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Rows(tbl.Rows.Count).Interior.Color = vbCyan
VB

応用コピー&加工

  1. 表を右隣にコピー+加工
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
  1. 表を下にコピー+色付け
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

ループ処理応用

  1. 表の各行を処理
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
  1. 表の各列を処理
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

高度な応用

  1. 表の右隣に新しい表を作成
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
  1. 表の下に新しい表を作成
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
  1. 表の範囲を動的に拡張して加工
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Resize(tbl.Rows.Count + 5, tbl.Columns.Count + 2).Borders.LineStyle = xlContinuous
VB
  1. 表の右隣に「集計列」を追加
Dim tbl As Range
Set tbl = Range("A1").CurrentRegion
tbl.Offset(0, tbl.Columns.Count).Resize(tbl.Rows.Count, 1).Value = "集計"
VB
  1. 表の下に「合計行」を追加
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」テンプレを押さえておけば、表全体の動的処理・コピー・拡張・加工まで自在に扱えます。

タイトルとURLをコピーしました