为什么我尝试的时候:
MsgBox (Cells(1, 1).Value)
案例如下:
我知道#N/A
是Excel中的默认错误单元格值,但是我手动输入了这个值,VBA是不是将#N/A
的手动输入作为字符串?
答案 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
。