目次
B 列から D 列を削除したい
今回の投稿では、下記画像のワークシートの 2 ~ 4 列目の列全体を削除するマクロを作成してみたいと思います。 2 , 3 , 4 と連続する範囲になっています。ワークシートで数式入力する時の範囲指定でいうと、 =B:D という書式になるでしょうか。
連続する「行」の削除方法は、以前の投稿で書いてみました。
ExcelVBA で連続する範囲の行を削除する方法。
Columns("B:D").Delete
早速、以下のマクロを作成してみました。「ActiveSheet」は現在のワークシートを指定しています。「Columns("B:D")」の部分で、「B 列 から D 列」の列全体を指定しています。「Delete」で「ActiveSheet」の中の「Columns("B:D")」の範囲の削除を実行しています。
Sub 連続する列全体を削除するマクロ()
ActiveSheet.Columns("B:D").Delete
End Sub
上のマクロの実行結果は以下の画像のようになりました。 B 列 から D 列が削除されていますね。
エラー発生
次は、以下のマクロを作成してみました。上のマクロの「Columns("B:D")」の部分を「Columns("2:4")」という指定に変更してみました。 2 ~ 4 列目を指定しているつもりです。
Sub 連続する列全体を削除するマクロ_列番号で指定()
ActiveSheet.Columns("2:4").Delete 'エラーが発生します。
End Sub
上のマクロを実行してみると、以下の画像のようなエラーが発生してしまいました。
列を一列だけ削除する時は、「Columns(2).Delete」で列の削除に成功したはずですが、複数列の削除の場合はエラーになってしまいました。 0-9 の列番号での指定は行えないのかもしれませんね。
0-9 の列番号での指定を基にして、連続する列を指定する場合は、以下のマクロのような方法もあると思います。「Columns(2)」で 2 列目全体を指定後、「Resize(, 3)」で列数のみを変更しています。
Sub 連続する列全体を削除するマクロ_Resizeで指定()
ActiveSheet.Columns(2).Resize(, 3).Delete ' 2 列目全体を基点にして、総列数を 3 列に変更している。
End Sub
上のマクロを実行してみると、以下の画像のように列の削除に成功しました。
テスト環境
- Windows 10
- Microsoft Office Excel 2003
あとがき
単一の列の削除では、「Columns(2).Delete」の指定が行えましたが、複数列の場合は使用できないのですね。複数行の削除を行う場合は、「Rows("2:4").Delete」で成功したので、同じ様にやってみましたが、少し違うようですね。
以上、閲覧ありがとうございました。