Excel VBA テーブルの列を追加/削除する方法について

スポンサーリンク

テーブル操作第6回目です。VBAでテーブルの列を追加したり、削除したりする方法について解説します。

くるみこ
くるみこ

テーブル内の列を追加したり削除したりする操作について勉強していきましょう(^^)/

なんか、だんだん実戦的になりつつあるという感じがします。
よろしくお願いしますm(_ _)m

【この記事でわかること
・テーブルに列を追加する方法がわかります
・テーブル内の不要な列を削除する方法がわかります

前回記事のおさらいは、下のカードをクリックすれば開きます(^^ゞ

くるみこ
くるみこ

前回記事は、テーブルを特定する方法の解説記事でした。覗いてみてね(^^)/

スポンサーリンク

テーブルの列を操作する

列は ListColumnオブジェクトで、列の集合ListColumnsコレクションのメンバーです。ListColumnsコレクションを取得するのには、ListObjectオブジェクトのListColumnsプロパティを使用します。

列を追加する方法

・テーブルに列を追加するには、ListColumnsコレクションオブジェクトのAddメソッドを使います。ListColumnsコレクションオブジェクトのメソッドは「Add」だけです。

'アクティブなテーブルに列を追加する
Sub AddColumnTable()
    ActiveSheet.ListObjects(1).ListColumns.Add
End Sub

・実行結果は、テーブル右端に列が追加されます。
・ListColumns.Addメソッドの引数を指定しない場合は、列の最後に追加されます。

列を挿入する

・次のコードは、アクティブシートの1番目のテーブルの、先頭に列を追加します。

'テーブルに列を追加挿入する
Sub AddColumnInsertTable01()
    ActiveSheet.ListObjects(1).ListColumns.Add Position:=1
End Sub

・ListColumns.Addメソッドの引数「Position:=1」は1列目に追加するという意味です。
・この引数名表記「Position:=」は「Add 1」又は「Add(1)」ように省略できます
・列が追加されるとそれ以降の列は右にずれることになります。
・追加された「列」の見出しは「列1」「列2」というような表記がつきます。

列追加と同時に列見出しにタイトルをつける

・列追加と同時に列見出しに「タイトル」をつけてみましょう。
・アクティブシートのテーブル(1)の、2列目に列を追加すると同時に「タイトル」を付けます。

'テーブルの2列目に列を追加挿入してタイトルを設定
Sub AddColumnNameInsertTbl()
    ActiveSheet.ListObjects(1).ListColumns.Add(2).Range(1) = "クリック順位"
End Sub

Addメソッドは「ListColumnオブジェクト」を返します
・追加した列の先頭セル「Range(1)」に任意の文字列を代入すれば「タイトル」を変更できます。
・この場合、Addの引数名を省略して使います。
・「.ListColumns.Add(2).Range(1) = “クリック順位”

列を削除する

テーブルの列は、ListColumnオブジェクトの Deleteメソッドで削除できます。

テーブルの指定列を削除するサンプル

先頭列(1列目)を削除します
'テーブルの先頭列を削除する
Sub DelColumnTable()
    ActiveSheet.ListObjects(1).ListColumns(1).Delete
End Sub

・列番号を指定して削除する例です。サンプルは先頭列(1列目)を指定しています。
・2列目ならば ListColumns(2) です。当然、無い番号を指定するとエラーになります。

列の「名前」を指定して削除する
'列の「名前」を指定して削除する
Sub DelColNameTable()
    ActiveSheet.ListObjects(1).ListColumns("クリック順位").Delete
End Sub

・サンプルのように、列名を指定して削除することもできます。

最終列を削除する

'最終列を削除するコード3種類

'最終列削除_変数を利用する方法
Sub DelColCountTable_01()
    Dim cnt As Long
    With ActiveSheet.ListObjects(1)
        cnt = .ListColumns.Count
        .ListColumns(cnt).Delete
    End With
End Sub

'最終列削除_Countを利用する方法
Sub DelColCountTable_02()
    With ActiveSheet.ListObjects(1)
      .ListColumns(.ListColumns.Count).Delete
    End With
End Sub

'最終列削除_Count_Itemを利用する
Sub DelColCountTable_03()
    With ActiveSheet.ListObjects(1).ListColumns
        .Item(.Count).Delete
    End With
End Sub

・アクティブなシートの一つ目のテーブルの最終列を削除しています。
・VBA実行時の最終列を削除する場合は、列数が変更されている可能性も考慮して考えます。
・「カウントした列数」=「最終列番号」なので ListColumns.Count で求めて利用します。

・1つ目のサンプルは、列カウント数を変数に代入して削除列番号に利用するコードです。
・2つ目は、列指定部分で直接カウント値を代入する方法のコードです。
・3番目は、ListObjectsのプロパティItemでカウント値をインデックスで受け取るコードです。
動作は全て同じですのでどれを使っても良いと思います

スポンサーリンク

まとめ(おわりに)

・いかがでしたでしょうか?
「いつも汎用でだれでも使えて活用できるように考えてVBAを使う」というポリシーを念頭に記事を書いています。
・今回は、記事内で使用したコードのサンプルファイルを登録していますのでご利用ください。
今までの記事のサンプルも登録していますのでよろしければお使いください(^^)

まとめと感想など

くるみこ
くるみこ

テーブルの列操作について「Add」と「Delete」の解説でした。
これで列追加と削除の方法はわかりましたか?

はい! 大体わかりました!
追加した列が空っぽなのでなんだか寂しいですね(^^;

くるみこ
くるみこ

そうですね。でもその部分の解説は少し待ってね。今回「列」だったから次はやっぱり「行」でしょう(^^;。。。というわけで、テーブル操作7回目は「行」の操作方法についての解説にしたいと思いま~す(^^)

【今回分かったことは】
・テーブルの列を操作する
 「テーブル内に列を追加・挿入する方法」
 「テーブルの列を削除する方法」
・テーブルの最終列削除は列数をカウントして実行します


ブログランキングに参加しています(^^) 応援よろしくお願いしますm(_ _)m

今後の記事について

今回の記事はいかがだったでしょうか。皆さまのお役に立てたなら幸いです(^^;
「汎用でだれでも使えて活用できるように考えてVBAを使う」というポリシーで、記事を継続して書いていきたいと思っています。どうぞよろしくお願いしますm(_ _)m

【検討中の今後の記事内容は・・・・・】
・実務に役立つものを提供できるよう常に検討しています(^^ゞ
・その他雑記的に「プチネタなど」もいろいろ考えていきたいと思います・・・・・
・今後の記事にもご期待ください(^^)/

記事のサンプルファイルをダウンロードできます

今回の記事のサンプルをダウンロードできるようにしています
過去の記事で使用したサンプルファイルがダウンロードできるページを設置しています
こちら(このリンク先)からご利用ください

スポンサーリンク

スポンサーリンク