
【VBA】複数のセルを選択・削除する方法
どうも、HALUです。
今回はエクセルのデータを消したい時に使えるコードを2通り紹介します。
まず初めに、とある表のデータをまとめて選択する方法を紹介します。コードは以下の通り。
'----------- 連続セルの選択
Sub select_cells()
'----------- セルの3BからCtrl↓+Ctrl→までの範囲を選択
ThisWorkbook.Worksheets(1).Range(Cells(3, 2), Cells(3, 2).End(xlToRight).End(xlDown)).Select
End Sub
Rangeは引数を2つ持ち、開始のセル番地と終了のセル番地を指定することでその2つのセルの間に含まれるセルを全て指定することが出来ます。
元が上記のような表があったとします。
次からコードの解説をします。
End()はExcelで以下の操作をした時と同じです。
・あるセルからCtrl+カーソルキーを押す
つまりEnd(xlToRight)はCtrl+→を押した時と同じ箇所のセルを指定することが出来ます。上記コードであれば、セルの(3,2)の場所から一番右の(データが存在する)セルを指すことになります。
ちなみに、Ctrl+↓だったらEnd(xlToDown)、Ctrl+↑を使いたいならEnd(xlToUp)などと括弧の中身を変更します。
そして、文末の.Selectは左で指定していた範囲に対して選択状態にするためのコードになります。
これを実行することで、
上の図のように(3,2)のセルから右下の範囲まで全てのセルが選択されました!
続いて、この範囲のセルを削除するところまで実装したコードを紹介します。先ほどのコードが理解出来ていればこちらは非常に簡単です。
'----------- 連続セルの削除
Sub delete_cells()
ThisWorkbook.Worksheets(1).Range(Cells(3, 2), Cells(3, 2).End(xlToRight).End(xlDown)).Delete
End Sub
さて、先ほどのコードと何が変わったでしょうか!
間違い探しのようですが、コードで変わったのはsub名と、長いコードの一番後ろが.Selectから.Deleteになってます。たったこれだけで先ほどの範囲に含まれるデータを全て削除できます。
実行結果
綺麗に削除されています。
オンライン家庭教師の申し込みはこちらから