0

2列のExcelスプレッドシートがあり、最後の行は287983. 列 A には数字があり、セルに数字がない場合はNaNそこに配置されます。列 B には日付があります。次のマクロを使用して、列 A のセルにあるすべての行を削除しようとしていますNaN

Sub Rowdel()
    Dim i As Long
    For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        If Cells(i, 1) = "NaN" Then Cells(i, 1).EntireRow.Delete
    Next i
End Sub

ただし、上記のコードを実行すると、NaNセルはまだそこにあります。コードが機能しない理由を誰かが提案できますか?

4

1 に答える 1

0

このコードが正しいワークシートを参照していることを確認してください。おそらく、間違ったワークシートでコードを実行している可能性がありますNaN。列 A に no が含まれているため、コードが実行されていることを示す削除やその他の目に見える兆候はありません。

次の (デバッグ専用) バージョンを使用して、このコードのデバッグを試みることができます。

Sub Rowdel()
    Dim i As Long
    For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        Cells(i, 1).Select
        If Cells(i, 1) = "NaN" Then Cells(i, 1).EntireRow.Delete
    Next i
End Sub

Excel VBA ウィンドウから、 を使用して sub を実行しますF8。これにより、コードをステップ実行して、参照しているワークシートを確認できます。

于 2012-11-14T00:26:58.610 に答える