Excelのテーブル機能(ListObject)は非常に便利ですが、場合によっては「通常のセル範囲のまま」で表形式として扱いたいケースもございます。たとえば、シンプルな構造のまま処理したいときや、他の形式との互換性を考慮するときなどです。
本記事では、テーブルを使わずに表形式のデータをVBAで操作する方法をご紹介いたします。
目次
使用例:CurrentRegionで表全体を取得
まず、データの開始セルから表全体を自動取得する方法です。
Dim myRange As Range
Set myRange = Range("B2").CurrentRegion
このCurrentRegion
プロパティを使うと、空白セルで囲まれた「ひとかたまりの表データ」を一発で取得できます。
行や列、データ部のみを選択する
以下のように、特定の行・列・データ部だけを操作することも可能です。
' 2行目(見出しを除く最初のデータ行)を選択
myRange.Rows(2).Select
' 1列目(たとえばID列など)を選択
myRange.Columns(1).Select
' データ部(見出し行を除いたすべての行)を選択
myRange.Rows(1).Resize(myRange.Rows.Count - 1).Offset(1).Select
構造化参照が使えない環境や、敢えてテーブル化を避けたいときにも有効な手法です。
注意点と活用ポイント
項目 | 内容 |
---|---|
CurrentRegionの限界 | 空白行や空白列があると、そこで範囲が切れてしまいます |
見出し行の取り扱い | 必要に応じてOffsetやResizeで除外処理を行いましょう |
選択から操作へ | .Select だけでなく、.Copy や.ClearContents なども併用可能です |
まとめ
VBAでテーブルを使用せずに表形式データを柔軟に扱いたい場合は、CurrentRegion
を活用した範囲取得が非常に有効です。構造化参照が使えない状況でも、行・列・データ部を明確に指定することで、十分に実用的な処理が可能となります。
日々の自動化業務において、簡易的なデータ処理やテンプレート操作などにぜひお役立てください。