まずは、提示のコードでは下記でエラーになり実行できませんね。
vba
1 If Cells(i, 1).Value = "" Then
2 Range(Cells(i, 1) & i).EntireRow.Delete '←この行で"Rangeメソッドは失敗しました"エラー
3 End If
あと対象シートは省略しないようにしましょう。
vba
1 If ws1.Cells(i, 1).Value = "" Then
2 ws1.Cells(i, 1).EntireRow.Delete
3 End If
とりあえずこれを修正してから、やりたいことをもう少し具体的に説明してください。
範囲指定した行を削除
vbaでA列に値がない行全体を削除したいのですが、
A列、C列に連続して値が入っていて、A列に値がなくなった(空白になった)場合に、値がなくなった行以降削除する
タイトル、質問、修正依頼へのコメント で3つの命題がありますが、言葉通りに解釈するとそれぞれ意味が異なりますよね。実際にやりたいことはなんでしょうか。
A列、C列に連続して値が入っていて、A列の途中の行の値を削除したときに、その行から下の行をすべて削除したいということでしょうか。
それとも、A列に値がない行のみを削除したいということでしょうか。
元データ
タイトル | | |
---|
サブタイトル | | |
項目1 | 項目2 | 項目3 |
1 | | a |
2 | | b |
| | c |
| | d |
5 | | e |
6 | | f |
実行後のデータ
理想1
タイトル | | |
---|
サブタイトル | | |
項目1 | 項目2 | 項目3 |
1 | | a |
2 | | b |
5 | | e |
6 | | f |
理想2
やりたいことは「理想1」「理想2」のどちらでしょうか。あるいは上記以外でしょうか。
その場合は、上記のように表形式で提示するか、スクリーンショットをアップロードしてください。