この記事では、Excel VBAを使って行を削除する方法について、初心者の方にもわかりやすく説明します。
普段の業務で、「特定の条件に当てはまる行だけを削除したい」「手作業では時間がかかるから自動化したい」と感じたことはありませんか?
VBAを使えば、そんな作業を一瞬で終わらせることができます!
VBAとは?
VBA(Visual Basic for Applications)は、Excelに組み込まれたプログラミング言語です。
繰り返し作業や複雑な操作を自動化できるため、業務効率化に非常に役立ちます。
「マクロを使って何かしたい!」という時に、裏で動いているのがこのVBAです。
VBAマクロで行を削除する基本構文
VBAで行を削除するには、Rows(行番号).Deleteという命令を使います。
たとえば、3行目を削除したい場合は以下のように書きます。
Sub DeleteRow()
Rows(3).Delete
End Sub
または、アクティブセルがある行を削除する場合はこうなります。
Sub DeleteActiveRow()
ActiveCell.EntireRow.Delete
End Sub
条件付きで行を削除するサンプルコード
よくあるのが、「特定の値が入っている行だけを削除したい」というパターンです。
たとえば、A列に「削除」と書かれている行を削除するマクロは以下のようになります。
Sub DeleteRowsWithKeyword()
Dim i As Long
Dim lastRow As Long
' 最終行を取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
' 下から上へループ(削除による行ズレ防止のため)
For i = lastRow To 1 Step -1
If Cells(i, 1).Value = "削除" Then
Rows(i).Delete
End If
Next i
End Sub
このコードのポイントは、「下から上にループしていること」です。
上から順に削除してしまうと、削除によって行がずれてうまく処理できません。
よくあるエラーと注意点
初心者がつまずきやすいポイントを紹介します。
行番号の指定ミス
Rows(0).Delete のように 存在しない行番号 を指定するとエラーになります。
行番号は必ず「1以上」を指定しましょう。
行削除のループ順序ミス
繰り返しになりますが、行を削除する場合は必ず下から上にループしましょう。
上から削除すると、対象の行が飛ばされてしまいます。
実行後の取り消しができない
VBAマクロは実行後にCtrl+Z(元に戻す)が使えません。
大切なデータがある場合は、事前にバックアップを取っておきましょう。
実行前にやっておくべきこと
マクロを初めて使う場合、次の設定を確認しておきましょう。
開発タブを表示する
Excelの「ファイル」→「オプション」
「リボンのユーザー設定」を開く
「開発」タブにチェックを入れる
これで、「開発」タブが表示され、VBAエディターを使えるようになります。
マクロの有効化
初めてマクロを使うブックを開いたとき、「マクロを有効にする」かどうかの選択が表示されます。
「有効にする」を選んでください。
まとめ
今回は、Excel VBAで行を削除する基本的な方法と、条件付き削除のサンプルコードをご紹介しました。
ポイントをおさらいしましょう。
・Rows(番号).Deleteで行を削除できる
・条件付き削除は下から上にループするのがコツ
・実行前にはバックアップと設定確認を忘れずに!
一度覚えてしまえば、今まで手作業でやっていた面倒な処理が数秒で終わるようになります。
ぜひ、自分の業務に合ったマクロを作って、作業の時短に活用してみてください!