ネット上で、「vba 行の削除」で検索すると

Excel(エクセル) VBA入門:条件を満たす行を削除するの様に

Sub test01()
 Dim lRow As Long
 Dim i As Long
  lRow = Cells(Rows.Count, 1).End(xlUp).Row
  For i = lRow To 2 Step -1
    If Cells(i, 2).Value = 0 Then
      Range(i & ":" & i).Delete
    End If
  Next i
End Sub

と一番下の行から上まで、条件を確認しながら一行づつ削除するコードが一般的です。

※このサイトで説明されているように、必ず、下から上へ移動します(上から下はダメ)。

 

VBAだけで、行の削除(目的)を実行するには、上記の方法になります。

エクセルの関数の機能を使った場合

C2セルに Match関数で、該当するセルの最初の行番号

D2セルに Countif関数で、該当するセルの個数 を表示しておけば

Sub ボタン1_Click()
Do While Range("D2").Value > 0
GYOU = Range("C2").Value
Rows(GYOU).Delete
Loop
End Sub

 

もう少しまとめると

Do While Range("D2").Value > 0
Rows(Range("C2").Value).Delete
Loop
 

なんと3行で可能です(関数を入れておくセルは必要です)

削除する条件などは、関数に入れる事ができますので

後々、VBAを編集する必要なく、修正が出来てます。

せっかくエクセルを使用していますので

エクセルのVBAの力だけでなく、エクセルの持つ機能や関数もフル活用しましょう。

まだまだ、新しいアルゴリズム(目的を達成するための手順)の発見はありそうです。

たぶん、こちらの方が、条件を満たす行を全て検証する事がないので

PCの負担も軽い(?速い)のではないでしょうか。

総当たりで、条件を確認する場合

・データ件数が増えると当然、処理時間が長くなります。

・繰返しの処理と条件を確認する処理(IF文)が毎回実行されます。

関数を使って、該当する行を探して削除する場合

・削除するデータの行数分の繰り返し処理ですみます。

・VBAで条件を確認する必要がありません。(関数で行っています)

 
もう一つの発想、必要な行を別シートに抽出する。
是非、参考にして下さい。

おもしろエクセル塾 目次(Vol 1)

にまとめてあります。