VBAでエクセルシートの列を削除する方法について説明します。
列を削除する方法(1列)
列の削除はColumnsプロパティのDeleteメソッドを実行します。
列を操作する場合はA列・B列…とアルファベットで指定する方法と、1列目・2列目…と列数で指定する方法があります。
アルファベットで指定する場合はカッコ内にアルファベットを””で囲んで指定します。
'B列の削除(アルファベットで指定)
Columns("B").Delete
数字で何列目かを指定する場合はカッコ内に数字を記述します。
'2列目の削除(数字で指定)
Columns(2).Delete
▽マクロ実行前→実行後のイメージ
B列(2列目)が削除されました。(どちらも結果は同じです。)
複数列(範囲)を一気に削除する
次は列の範囲を指定する方法です。
アルファベットで指定する場合はカッコ内に””で囲んでB~C列の場合は「”B:C”」のように指定します。
'B列~C列の削除(アルファベットで指定)
Columns("B:C").Delete
数字で指定する方法は1列だけ削除するときとちょっと書き方が変わるので注意です。
1列だけのときは「Columns(2)」の書き方で指定していましたが、複数列の場合は「Columns(“2:3”)」では指定できません。複数行のときは「Rows(“2:3”)」でできていたのにちょっと不思議ですよね。
複数列の場合はRangeで囲んで、その中でColumns()をカンマで区切って開始列と終了列を指定します。
'2列目~3列目の削除(数字で指定)
Range(Columns(2), Columns(3)).Delete
▽マクロ実行前→実行後のイメージ
B列~C列(2列目~3列目)までが削除されました。
2列目~最終列までを削除する
次は2列目~最終列までを削除したい場合の書き方です。
先に最終列を調べて変数に格納してから列数を指定しています。
シートで使っている列数が変わる場合に便利な方法です。
'2列目~最終列の削除
Dim LastCol As Integer
'最終列を変数に取得
LastCol = Cells(1, Columns.Count).End(xlToLeft).Column
'B列(2列目)~最終列の削除
Range(Columns(2), Columns(LastCol)).Delete
▽マクロ実行前→実行後のイメージ
2列目のB列~最終列のC列までが削除されました。
関連記事(行・列操作まとめ)
こちらの記事では行と列の操作をまとめています。よかったらこちらもご覧ください。
※コードのコピー利用について
・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。
・記事の内容は適宜変更することがありますのでご了承ください。