目次

B 列から D 列を削除したい

今回の投稿では、下記画像のワークシートの 2 ~ 4 列目の列全体を削除するマクロを作成してみたいと思います。 2 , 3 , 4 と連続する範囲になっています。ワークシートで数式入力する時の範囲指定でいうと、 =B:D という書式になるでしょうか。

ワークシートの 2 から 4 列目を削除したい。
ワークシートの 2 から 4 列目を削除したい。

連続する「行」の削除方法は、以前の投稿で書いてみました。

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 列が削除されていますね。

ワークシートの B 列から D 列が削除されている。
ワークシートの B 列から D 列が削除されている。

目次まで戻る

エラー発生

次は、以下のマクロを作成してみました。上のマクロの「Columns("B:D")」の部分を「Columns("2:4")」という指定に変更してみました。 2 ~ 4 列目を指定しているつもりです。

Sub 連続する列全体を削除するマクロ_列番号で指定()

ActiveSheet.Columns("2:4").Delete 'エラーが発生します。

End Sub

上のマクロを実行してみると、以下の画像のようなエラーが発生してしまいました。

実行時エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。

列を一列だけ削除する時は、「Columns(2).Delete」で列の削除に成功したはずですが、複数列の削除の場合はエラーになってしまいました。 0-9 の列番号での指定は行えないのかもしれませんね。

0-9 の列番号での指定を基にして、連続する列を指定する場合は、以下のマクロのような方法もあると思います。「Columns(2)」で 2 列目全体を指定後、「Resize(, 3)」で列数のみを変更しています。

Sub 連続する列全体を削除するマクロ_Resizeで指定()

ActiveSheet.Columns(2).Resize(, 3).Delete ' 2 列目全体を基点にして、総列数を 3 列に変更している。

End Sub

上のマクロを実行してみると、以下の画像のように列の削除に成功しました。

ActiveSheet.Columns(2).Resize(, 3).Delete の実行結果です。 2 - 4 列目が削除されています。
ActiveSheet.Columns(2).Resize(, 3).Delete の実行結果です。 2 - 4 列目が削除されています。

目次まで戻る

テスト環境

  • Windows 10
  • Microsoft Office Excel 2003

目次まで戻る

あとがき

単一の列の削除では、「Columns(2).Delete」の指定が行えましたが、複数列の場合は使用できないのですね。複数行の削除を行う場合は、「Rows("2:4").Delete」で成功したので、同じ様にやってみましたが、少し違うようですね。

以上、閲覧ありがとうございました。

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿