• ベストアンサー

#N/Aの文字を削除するには

お世話になっております。 #N/Aの文字を含む行を削除するため以下のようなマクロ(Excel)を組みました。 Dim i As Long With Range("C1") For i = .CurrentRegion.Rows.Count To 1 Step -1 If .Offset(i, 2) = "#N/A" Then .Offset(i, 5).EntireRow.Delete Next i End With 当然かもしれませんが、IF文の ".offset(i,2)="#N/A""のところで「型が一致しません」とエラーが出てしまいます。 シート上で#N/Aは数式でなく値として記録されています。 どのようにすればエラーを回避できるでしょうか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。 IsNA はワークシート関数なので、Application が必要ですね。   If Application.IsNA(.Offset(i, 2)) Then または、   If VarType(.Offset(i, 2)) = vbError Then とか。 #N/A エラーかどうか、エラーの種類チェックが不要なら SpecialCells で数式の エラー値を拾った方が早いと思いますよ。 C 列から列方向に Offset 2 だから E 列でエラー値がある行を削除するのかな?   Dim rTarget As Range   On Error Resume Next   Set rTarget = Columns("E").SpecialCells(xlCellTypeFormulas, xlErrors)   If Not rTarget Is Nothing Then     rTarget.EntireRow.Delete Shift:=xlShiftUp   End If

yuichi8
質問者

お礼

KenKen_SPさん、前回に引き続き今回もありがとうございました。 SpecialCellsの方は条件の"xlCellTypeFormulas"を"xlCellTypeConstants"にしたところうまくいきました。

その他の回答 (1)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.1

If ISNA(.Offset(i, 2)) Then

yuichi8
質問者

お礼

chie65536さんありがとうございます。ISNA関数参考になりました。