我正在尝试创建一个函数来处理Excel中单元格值的错误。当我运行它时,我收到一个错误,因为VBScript中不存在IsError
函数。
Function errValue(j, pos)
er=false
ran = Mid(oSht.Cells(1, pos).Address, 2, InStr(2, oSht.Cells(1, pos).Address, "$") - 2)&j
'ran is D17
Set R = oSht.Range(ran)
If IsError(R.Value) Then
Select Case R.Value
Case CVErr(xlErrValue)
er=true
Case CVErr(xlErrDiv0)
er=truee
Case CVErr(xlErrName)
er=true
Case Else
er=true
End Select
End If
errValue = er
End function
还有其他办法吗?
答案 0 :(得分:1)
WorksheetFunction
对象应该允许您使用VBScript和VBA中的Excel函数:
Set xl = CreateObject("Excel.Application")
...
If xl.WorksheetFunction.ISERROR(R.Value) Then
Select Case R.Value
Case CVErr(xlErrValue)
er=true
Case CVErr(xlErrDiv0)
er=truee
Case CVErr(xlErrName)
er=true
Case Else
er=true
End Select
End If
我现在无法访问Excel,所以我无法测试。
答案 1 :(得分:0)
OP提出的解决方案:
Function errValue(j, pos)
er = False
ran = Mid(oSht.Cells(1, pos).Address, 2, _
InStr(2, oSht.Cells(1, pos).Address, "$") - 2) & j
Set R = oSht.Range(ran)
If Not VarType(R.Value) <> vbError Then
er = True
End If
errValue = er
End Function
可以简化为:
Function errValue(j, pos)
addr = oSht.Cells(1, pos).Address
ran = Mid(addr, 2, InStr(2, addr, "$") - 2) & j
errValue = VarType(oSht.Range(ran).Value) = vbError
End Function