目次
列を削除したい
今回は、 ExcelVBA(エクセルブイビーエー)のマクロでワークシートの指定の列を削除するマクロを作成してみました。 Columns().Delete の記述を使用しています。
以前の投稿で、行を削除するマクロを作成してみましたので、よければそちらもご覧ください。
ExcelVBA で行を削除したい。 Rows().Delete 使用。
A-Z の列名で指定
早速、列を削除するマクロを作成してみました。「ActiveSheet」は、現在のワークシートを指定しています。「Columns("B")」は、「B 列」を指定しています。「Delete」メソッドで、現在のワークシートの B 列を削除するマクロになっています。
行を削除する場合は、「Rows(2).Delete」と行の番号を数字で指定しましたが、列の削除では、列のアルファベットの名前で指定することもできるようです。
Sub 列を削除するマクロ_列名指定()
ActiveSheet.Columns("B").Delete
End Sub
上記のマクロを以下の画像のワークシート上で実行してみます。マクロを実行すると B 列が削除されると思います。
マクロを実行すると、 B 列が削除されています。マクロが成功したようです。
0-9 の列番号で指定
今度は、削除する列の指定を 0-9 の数字の列番号で行ってみたいと思います。以下のマクロを作成してみました。上のマクロでは、「Columns("B")」として 2 列目を削除しましたが、今度は、「Columns(2)」と書いています。同じく B 列が削除されるマクロになっています。
Sub 列を削除するマクロ_列番号指定()
ActiveSheet.Columns(2).Delete
End Sub
以下のワークシートの内容でマクロを実行してみます。
マクロを実行すると、以下の画像の結果になりました。「Columns(2).Delete」と直接 2 列目を指定しても削除可能なようですね。
テスト環境
- Windows 10
- Microsoft Office Excel 2003
参考資料
- Excel の列番号を英文字に変換する方法 | Microsoft Docs
- https://docs.microsoft.com/ja-jp/office/troubleshoot/excel/convert-excel-column-numbers
あとがき
直感的には、 A-Z からなる列名で指定した方が便利そうですが、 Column プロパティで列番号を取得してから列を削除したい場合などは、数字での指定も向いているかもしれません。
Sub columnプロパティで列番号取得後に列削除するマクロ()
Dim col_no As Long '列番号を格納する変数を宣言しています。
col_no = Range("B1").Column '列番号を取得しています。
Debug.Print "列番号は? " & col_no 'イミディエイトウィンドウに列番号を出力しています。
ActiveSheet.Columns(col_no).Delete '列番号を使用して列を削除しています。
End Sub
以上、閲覧ありがとうございました。