空白单元格的VBA错误处理问题

时间:2016-10-20 14:09:15

标签: excel vba excel-vba

这是我正在使用的表格的一部分示例:enter image description here

此表由其他一些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

现在表格如下:

enter image description here

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

2 个答案:

答案 0 :(得分:3)

我的第一个建议是用=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 :(得分:0)

问题#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