空白单元格的VBAerror handling问题

这是我正在使用的表的一部分的示例: 在这里输入图像说明

该表是从其他一些VBA代码生成的。 我写了一个简单的脚本来清除表中生成的#VALUE项。

'Clean any value errors before charting With Worksheets("CG Raw Data") On Error Resume Next Range("A2:W2").End(xlDown).SpecialCells(xlCellTypeFormulas, xlErrors).ClearContents On Error GoTo 0 End With End Sub 

现在表格看起来像:

在这里输入图像说明

由于某种原因,如果代码中有空白,而不仅仅是#VALUE错误,则该代码将清除整个列。 我希望它只是删除#VALUE错误,并保留所有其他单元格。 据我可以告诉代码应该这样做。 什么是错误?

我的第一个build议是用=IFERROR(,"").来包装公式=IFERROR(,"").

另外,这样的事情应该工作:

 DIM rngCell as Range For Each rngCell In Worksheets(1).Range("A1:W" & Range("A1").End(xlDown).Row) If IsError(rngCell) Then rngCell.Clear End If Next rngCell 

我想象的是整个数据集被清除,因为你正在检查整个范围,如果任何值包含错误,清除它。

我没有代表发表评论。

问题#1 – 你正在Withing一个特定的工作表,但不符合Range()
问题#2 – 您将清除#VALUE以外的错误

怎么样:

 Sub NoValue() Dim r As Range, N As Long With Worksheets("CG Raw Data") N = .Cells(Rows.Count, "W").End(xlUp).Row For Each r In .Range("A2:W" & N) If r.Text = "#VALUE!" Then r.ClearContents Next r End With End Sub