2016-05-19 16 views
1

トランザクションアクティビティと呼ばれるファイル内のシートに移動するコードを記述しようとしています。列Nを参照し、N/Aエラー/それがゼロに変わります。それ以外の場合は、列の値だけを残します。VBAがN/Aエラーを見つけてゼロにチェンジする

Sub errorcheck() 



    Sheets("Transaction Activity").Visible = True 
    Sheets("Transaction Activity").Select 
    Cells.Select 
    Selection.EntireRow.Hidden = False 
    sNonBlank = Application.WorksheetFunction.CountA(Sheets("Transaction Activity").Range("N8:N1048576")) 

    If IsError(ActiveWorkbook.Sheets("Transaction Activity").Range("N8:N1048576").Offset(offsetCount, 0).Value) Then 
    If (ActiveWorkbook.Sheets("Transaction Activity").Range("N8:N1048576").Offset(offsetCount, 0).Value <> CVErr(xlErrNA)) Then 
    Cells.Select = 0 
    End If 
End If 

End Sub 

おかげ

ブライアン

+0

と非常によく似ているVBA

を使用することなく、式に

IFERROR(fx,0) 

を追加することができ、最初の場所でエラーを回避するために、が、これにはVBAが必要ですか? 'IFERROR'関数を使うことはできませんか? – jsheeran

+0

最初に、列 "N"を見ている場合、異なる行/列に移動するので、チェック内でオフセットを使用したくないのです... "Select"も避けるべきですコードを遅らせてください。セルの値を設定するには、 '.Select'ではなく' .Value = 0'を使用します。本当に必要なのは、IsErrorでエラーをチェックして、範囲を越えるループです値は0です。それはあなたの宿題に関する質問とよく似た音を出さずに与えることができるほどの助けです:) – Dave

+0

1000年代の時間を節約するために、この列車でエラーを出すレガシーモデルがあります。 VBAのライン、私はちょうどエラーの世話をするパッチを追加しているので、VBAが必要な理由は、数式はいくつかの場所からコピーされます。その混乱 –

答えて

1

シート内の数式がある場合は使用することができます。

Range("N:N").SpecialCells(xlCellTypeFormulas,xlErrors).Clear 

をこの行う必要がありませんあなたは

Range("N:N").replace "#N/A",0,xlwhole 

を使用することができればトリック。あなたはあなたがなぜ、これは別の質問How to remove #N/A that appears through out...

Also replace info

関連する問題