【VBA入門】テーブルを使わずに表形式データを操作する方法

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を活用した範囲取得が非常に有効です。構造化参照が使えない状況でも、行・列・データ部を明確に指定することで、十分に実用的な処理が可能となります。

日々の自動化業務において、簡易的なデータ処理やテンプレート操作などにぜひお役立てください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次