类型与单元格值不匹配" #N / A"

时间:2018-01-09 05:04:17

标签: excel vba excel-vba

为什么我尝试的时候:

MsgBox (Cells(1, 1).Value)

案例如下:

  1. 当我在单元格A1中写#123时,我从MsgBox获得#123。
  2. 当我在单元格A1中写#N / A时,我得到错误类型不匹配?
  3. 我知道#N/A是Excel中的默认错误单元格值,但是我手动输入了这个值,VBA是不是将#N/A的手动输入作为字符串?

1 个答案:

答案 0 :(得分:1)

Charles Williams' post很好地解释了.Value.Text的使用之间的差异。

在回答评论中的问题时,有许多不同的方法来替换细胞。一种方法是使用If...Then语句,例如:

If Cell().Text = "#N/A" Then
    ' Your code
End If

您可以在For Each...Next声明中使用上述内容:

Dim Cel as Range
For Each Cel In Worksheets(1).Cells
    If Cel.Text = "#N/A" Then
        Cel.Value = 0
    End If
Next Cel

此外,如果您想要查找所有错误(例如不仅仅是#N/A),您可以使用IsError()

Dim Cel As Range
For Each Cel In Worksheets(1).Cells
    If IsError(Cel) Then
        Cel.Value = 0
    End If
Next Cel

我可能会补充一点,检查整个工作表非常耗时。在检查了您需要的单元格后添加一些退出For语句的方法是明智的,例如使用UsedRange