目次

連続する行範囲

今回の投稿では、 Excel (エクセル)のワークシート内の連続する行範囲を削除するマクロを書いてみたいと思います。

例として下記画像の Excel ワークシートの 2 ~ 4 行目を削除するマクロを作成してみたいと思います。

連続する範囲の行を削除してみたいと思います。
連続する範囲の行を削除してみたいと思います。

目次まで戻る

Rows("2:4").Delete

早速、下記のマクロのコードを書いてみました。「ActiveSheet」は現在のワークシートを指定しています。「Rows("2:4")」は. 2 ~ 4 行目という指定になります。「現在のワークシート > 2 ~ 4 行目」という風に操作する対象をオートフィルタを掛けるように絞り込んでいるイメージでしょうか。「Delete」で絞り込んだ対象の削除を実行しています。

Sub RowsDelete()

ActiveSheet.Rows("2:4").Delete

End Sub

上のマクロの実行結果は以下のようになりました。 2 ~ 4 行目の B , C , D が入力されていた行が削除されていますね。

2 ~ 4 行目が削除されている。

上記のマクロで「Rows("2:4")」と書いた部分を、「Rows("A2:A4")」として、セル範囲の名前をダブルクオーテーション( " の記号、二重引用符)で囲んでもマクロが成功するでしょうか。以下のようにコードを修正してみました。

Sub RowsDelete_2()

ActiveSheet.Rows("A2:A4").Delete 'ワークシート上で数式入力する時に使用するようなセル範囲の指定を行ってみます。

End Sub

上のマクロを実行してみると、以下のようなエラーが発生してしまいました。この指定方法では、エラーになってしまうのですね。

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

以下のコードでは、どうなるでしょうか。「Rows(2:4)」として、ダブルクオーテーションで囲まないでおきます。

Sub RowsDelete_3()

ActiveSheet.Rows(2:4).Delete 'ここまで入力して Enter キーを押すとエラーが発生しました。

End Sub

上のマクロのコードの「Delete」まで入力して Enter キーを押したところ、以下のようなエラーが発生してしまいました。ダブルクオーテーションで囲む必要がありそうですね。

コンパイルエラー 修正候補 区切り記号または ) カッコ
コンパイルエラー 修正候補 区切り記号または ) カッコ

目次まで戻る

Rows(2).Resize(3).Delete

次は、違うやり方でワークシートの 2 ~ 4 行目を削除してみたいと思います。以下のマクロを作成してみました。「ActiveSheet」は、現在のアクティブなワークシート。「Rows(2)」は、 2 行目全体を指定しています。その後の「.Resize(3)」は、「Resize」プロパティというものを使用しています。「. ドット ピリオド?」の前の範囲の行数を「3」行分に変更するという命令になっています。 3 行足されるのではなく、基点を含んだ行の総数を指定するようです。

Sub RowsResizeDelete()

ActiveSheet.Rows(2).Resize(3).Delete

End Sub

上のマクロを実行してみると、以下の画像のような結果になりました。

ActiveSheet.Rows(2).Resize(3).Delete でも 2-4 行目が削除できました。
ActiveSheet.Rows(2).Resize(3).Delete でも 2-4 行目が削除できました。

目次まで戻る

Resize のテスト

Resize のテストとして以下のマクロを作成してみました。 Resize プロパティで操作対象の範囲を変更して、その時のセル範囲のアドレスを VBE のイミディエイトウィンドウに出力するマクロになっています。 Resize プロパティは「 Resize ( 変更後のセルの総行数 , 変更後のセルの総列数 ) 」という書式で記述するようです。

Sub Resizeプロパティのテスト()

Debug.Print ActiveSheet.Name 'ワークブックのアクティブなワークシートの名前です。

Debug.Print Rows(2).Address '始点のセル範囲です。

Debug.Print Rows(2).Resize(3).Address '始点を基にして「行」の総数を「3」行に変更した時のセル範囲です。

Debug.Print Rows(2).Resize(3, 3).Address '始点を基にして「行」の総数を「3」行、「列」の総数を「3」列に変更した時のセル範囲です。

End Sub

マクロの実行結果は以下の画像のようになりました。「$2:$2」だったセル範囲が、 Resize プロパティで変更されて「$2:$4」になっていますね。

Resize プロパティのテストの結果です。 Sheet1 , $2:$2 , $2:$4 , $A$2:$C$4 と出力されています。
Resize プロパティのテストの結果です。 Sheet1 , $2:$2 , $2:$4 , $A$2:$C$4 と出力されています。

イミディエイトウィンドウの出力結果です。

Sheet1
$2:$2
$2:$4
$A$2:$C$4

目次まで戻る

テスト環境

  • Windows 10
  • Microsoft Office Excel 2003

目次まで戻る

あとがき

ワークシートの連続する行を削除するマクロを 2 通り作成してみましたが、他にも色々な方法があると思います。一例としてご覧ください。

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

目次まで戻る

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

前後の投稿