2017-10-17 8 views
0

#NUMを含むセルをクリアする次のコードがあります。#NUMを含むセルをクリアしてください! VBA Excelで

Dim CLR As Range 
For Each CLR In ActiveSheet.UsedRange 
     If CLR.Text = "#NUM!" Then 
CLR.ClearContents 
     End If 
Next 

問題は、これらの数行のコードが私のプログラムを遅くすることです。たくさん。別のマクロを実行するためにこれらの値を削除する必要があるので、別の方法があるのだろうかと思っていました。

私はすでに使用された最後のセルを検索するのではなく、これをより小さな範囲に短縮しようとしました。しかし、それは同じ時間がかかった、または私は違いを気付かなかった。

Dim CLR As Range 
    For Each CLR In ActiveSheet.Range("Q3:BA2500") 
      If CLR.Text = "#NUM!" Then 
    CLR.ClearContents 
      End If 
    Next 

ありがとうございます!

+0

どのようにコードを実行していますか? 'CLR.ClearContents'は別の2つのレベルでインデントされるべきです – jsotola

答えて

1

エラーを含む細胞の合理的な数を持っている場合は、次のコードは、すべてのエラー値(#NUMだけではない!)クリアされます:8つ以上が存在する場合、これが出てエラーになること

ActiveSheet.Range("Q3:BA2500").SpecialCells(xlCellTypeFormulas, xlErrors).ClearContents 

注意を'エラーを含む192の別個の領域。また、エラーセルが見つからない場合はエラーになります。私はエラー処理に手を差し伸べるつもりです。

+0

2番目の問題を回避するには、' On Error Resume Next'と 'On Error GoTo 0' –

+1

そして、第1号を避けるために、列ごとに範囲の列をスキャンすることができます。 – Excelosaurus

関連する問題