2016-07-11 6 views
0

いくつかのセルをループし、セルが空になるまで(値= "")マクロを作成したいとします。しかし、いくつかのセルには#N/Aという "値"がありますが、これをマーカーとして使用して、セルの値が等しいかどうかをチェックする際に、すべての行を削除したい空であれば、ループは#N/Aに等しい多くのセルにわたります。これは実際には値ではなく、コマンド実行(この例ではVlookup)がそのセルでは機能しなかったことを示しているため、エラーが発生します。指定されたエラーは型の不一致です。これを回避するにはどうしたらいいですか?実際に値ではないにもかかわらずループがまだセルの値をチェックする方法はありますか?vbaのいくつか等しい#N/Aの場合、値に基づいてループする方法は?

+1

最初の行の最後から使用 '場合ISERROR(セル(i、j)は)その後、行(I).EntirerRow.Delete'ループ、それを削除。 – newguy

+0

確認するセルの量と位置は、マクロの繰り返しごとに変わります...どうすればループを設定できますか?私はuntil = ""が良いと思いましたが、タイプの不一致なので、どのようにループするのか分かりません –

答えて

1

これはすべて#N/Aのすべてのセルを見つけて、セル行を削除します。

Sub DeleteRowsWithErrors() 
    Application.ScreenUpdating = False 
    Dim c As Range 
    With Worksheets(1).Cells 

     Do 
      Set c = .Find(What:="#N/A", _ 
      After:=.Range("A1"), _ 
      Lookat:=xlPart, _ 
      LookIn:=xlValues, _ 
      SearchOrder:=xlByRows, _ 
      SearchDirection:=xlPrevious, _ 
      MatchCase:=False) 
      If Not c Is Nothing Then 
       .Rows(c.Row).Delete 

      End If 
     Loop While Not c Is Nothing 

    End With 

    Application.ScreenUpdating = True 
End Sub 
関連する問題