如果 Excel 公式返回的是一个错误文本,例如 #NULL!
、#DIV/0!
、#VALUE!
、#REF!
、#NAME?
、#NUM!
、#N/A
等,这时如果试图用 Value 属性来获得公式的返回结果,将得到类型不匹配的错误。以下是判断单元格公式是否存在错误的方法:
示例一:使用 IsError 函数
以下示例代码使用 IsError 函数判断 Range
对象的 Value
属性的返回结果是否为错误值,可得知公式是否存在错误,如果是则显示该错误类型,否则显示公式的结果:
Sub IsErrorDemo()
If IsError(Range("A1").Value) = True Then
MsgBox "A1单元格错误类型为:" & Range("A1").Text
Else
MsgBox "A1单元格公式结果为:" & Range("A1").Value
End If
End Sub
示例二:使用 Range.Errors 属性
使用 Range 对象的 Errors 属性可返回 Errors 对象,返回 Errors 对象后,可以使用 Error 对象的 Value 属性来检查特定的错误。
以下示例代码通过检查 Errors 对象的 xlEvaluateToError
常量值来判断单元格公式值是否为错误值,如果是则显示该错误类型,否则显示公式的结果:
Sub ErrorsDemo()
If Range("A1").Errors.Item(xlEvaluateToError).Value = True Then
MsgBox "A1单元格错误类型为:" & Range("A1").Text
Else
MsgBox "A1单元格公式结果为:" & Range("A1").Value
End If
End Sub
XlErrorChecks
常量列表如下:
常量 | 值 | 描述 |
---|---|---|
xlEmptyCellReferences | 7 | 单元格包含一个引用空单元格的公式。 |
xlEvaluateToError | 1 | 单元格计算为错误值。 |
xlInconsistentFormula | 4 | 单元格包含与区域不一致的公式。 |
xlInconsistentListFormula | 9 | 单元格包含与列表不一致的公式。 |
xlListDataValidation | 8 | 列表中的数据包含一个有效性错误。 |
xlNumberAsText | 3 | 按文本输入的数字。 |
xlOmittedCells | 5 | 忽略的单元格。 |
xlTextDate | 2 | 按文本输入的日期。 |
xlUnlockedFormulaCells | 6 | 解除锁定公式单元格。 |
以下示例在单元格 A1 输入文本型数字,然后判断单元格 A1 的值是否为文本型数字:
Sub ErrorValue()
' 在A1单元格中输入文本型数字
Range("A1").Formula = "'1"
' 检查单元格A1的值是否为文本型数字
If Range("A1").Errors.Item(xlNumberAsText).Value = True Then
MsgBox "A1的值为文本型数字"
Else
MsgBox "A1的值为数字"
End If
End Sub