ListObjectオブジェクト・テーブルの列名を取得するVBAのコードをご紹介しています。
実務では、VBAから列名を変更したい、ということもあるでしょう。
列名を設定するサンプルマクロ
以下のようなマクロで、アクティブなシート上の、1つ目の、1列目の名前を「GivenName」に設定することができます。ActiveSheet.ListObjects(1).ListColumns(1).Name = "GivenName"
End Sub
同じ列名の場合でも実行時エラーが発生しない
Excelマクロでは、同じ名前が存在しているときには実行時エラーが発生するということが、よくあります。
代表例が、シート名の変更マクロです。
既に存在しているシートと同じ名前を設定しようとすると、
「シートの名前を他のシート、Visual Basicで参照されるオブジェクトライブラリまたはワークシートと同じ名前に変更することはできません。」
という実行時エラーが発生します。
これに慣れている方だと、テーブルの列名変更でも同じような実行時エラーが発生するのだろうと考えるかもしれませんが、違います。
テーブルの列名の場合は、既に同じ名前の列名が存在していてもエラーは発生しません。
既に存在している列名を、指定しようとすると、エラーも何も発生することなく、列名の変更も行われることなく、マクロがそのまま終わってしまいます。
先のマクロを実行後に、コードを
ActiveSheet.ListObjects(1).ListColumns(2).Name = "GivenName"
のように少しだけ変更して実行して、エラーも発生せず、2列目の列名も変更されないことをご確認ください。
列名の変更を正しく行うには、同じ名前の列が存在していないかを事前にチェックしてから、列名変更処理を行う必要がありそうです。
最終更新日時:2019-10-28 11:02
Home » エクセルマクロ・Excel VBAの使い方 » ListObjectオブジェクト » ListObjectの列名を変更する-ListColumn.Name