为什么当我尝试:
MsgBox (Cells(1, 1).Value)
情况如下:
当我在单元格A1中写入#123时,我从MsgBox中获得#123。
当我在单元格A1中写入#N / A时,出现错误类型不匹配吗?
我知道
#N/A
是Excel中的默认错误单元格值,但是我已经手动输入了该值,VBA是否不将我的#N/A
手动输入作为字符串? 最佳答案
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
。