プロが教えるわが家の防犯対策術!

お世話になっております。
#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は数式でなく値として記録されています。
どのようにすればエラーを回避できるでしょうか。
よろしくお願いします。

A 回答 (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
    • good
    • 2
この回答へのお礼

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

お礼日時:2006/11/25 15:55

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2006/11/25 15:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています