
ExcelVBA 行の不要データを自動で削除して表の整理やデータ処理を効率化する。使い方や注意点など、サンプルコードをもとに具体的に解説します。
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
Excel VBA 行の不要データを自動で削除|シーン
以下のシーンで利用します。
1.特定の条件を満たす行(例: 空白行、特定の値を含む行)を削除する。
2.ユーザーが選択した行を削除する。
3.範囲を指定して一括で行を削除する。
4.データ整理のために不要な行を削除する。
Excel VBA 行の不要データを自動で削除|サンプルコード
ユーザーが削除したい行を手動で選択し、ボタンなどで削除を実行する場合
Option Explicit
Sub DeleteSelectedRow() '標準モジュール
If Not TypeOf Selection Is Range Then
MsgBox "セルを選択してください。", vbExclamation, "エラー"
Exit Sub
End If
Selection.EntireRow.Delete
End Sub
・セルを選択していない場合にエラーを防ぐ処理を入れている。
・Selection.EntireRow.Delete で選択したセルの行を削除。
指定した行を削除する(例: 5行目を削除)
Option Explicit
Sub DeleteRow5() '標準モジュール
Rows(5).Delete
End Sub
空白行を削除する(A列が空白の行を削除)
Option Explicit
Sub DeleteEmptyRows() '標準モジュール
Dim ws As Worksheet
Dim i As Long
Set ws = ActiveSheet
For i = ws.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If ws.Cells(i, 1).Value = "" Then
ws.Rows(i).Delete
End If
Next i
End Sub
・Cells(Rows.Count, 1).End(xlUp).Row でA列の最終行を取得
・For i = 最終行 To 1 Step -1 で後ろから削除(削除時の行ズレを防ぐ)
・If ws.Cells(i, 1).Value = "" Then でA列が空白の行を判定
指定の値を含む行を削除(例: B列に「削除」という文字がある行を削除)
Option Explicit
Sub DeleteRowsWithKeyword() '標準モジュール
Dim ws As Worksheet
Dim i As Long
Dim keyword As String
Set ws = ActiveSheet
keyword = "削除"
For i = ws.Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1
If ws.Cells(i, 2).Value = keyword Then
ws.Rows(i).Delete
End If
Next i
End Sub
・B列 (Cells(i, 2)) に「削除」と書かれた行を削除
・文字列を削除対象にする場合、変数 keyword に指定すると変更が簡単
ユーザーに削除する行を入力させる
Option Explicit
Sub DeleteRowByUserInput() '標準モジュール
Dim rowNum As Variant
rowNum = InputBox("削除する行番号を入力してください", "行削除")
If Not IsNumeric(rowNum) Or rowNum < 1 Then
MsgBox "有効な行番号を入力してください。", vbExclamation, "エラー"
Exit Sub
End If
Rows(CLng(rowNum)).Delete
End Sub
・InputBox でユーザーに行番号を入力させる。
・数値以外や0以下の入力を防ぐため、IsNumeric(rowNum) でチェック
・Rows(CLng(rowNum)).Delete で指定の行を削除
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
・削除時はStep -1で後ろから処理する
→ ループで削除する場合、前から削除すると行がずれて誤作動する。
・削除対象を確認してから実行する
→ MsgBox で削除確認を入れると安心。
If MsgBox("本当に削除しますか?", vbYesNo + vbExclamation, "確認") = vbNo Then Exit Sub
・元データを事前にバックアップしておく
→ 誤削除を防ぐために、バックアップを取っておくと安全。
・行全体を削除する場合はEntireRow.Deleteを使う
→ Selection.Delete だとセルのみ削除される可能性があるので、行ごと削除するなら EntireRow.Delete を推奨
Excel VBA 行の不要データを自動で削除|まとめ
目的 | 方法 |
選択した行を削除 | Selection.EntireRow.Delete |
特定の行(例: 5行目)を削除 | Rows(5).Delete |
空白行を削除 | If ws.Cells(i, 1).Value = "" Then Rows(i).Delete |
指定の値を含む行を削除 | If ws.Cells(i, 2).Value = "削除" Then Rows(i).Delete |
ユーザーが指定した行を削除 | InputBox で行番号を取得 |
行を削除する際は、処理の流れを理解し、誤削除を防ぐ工夫を入れることが大切
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!