我在VBA
中有以下代码来评估变量lngPNumber
以发送"更正"值为WorksheetFunction.vLookup
函数:
Dim lngPNumber As Variant
lngPNumber = ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Value
If IsNumeric(lngPNumber) = False Or CDbl(lngPNumber) <> Round(CDbl(lngPNumber)) Then
lngPNumber = CStr(ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Text)
End If
lngPNumber
可以是:
在最后两种情况下,我想发送单元格文本,而不是获取lngPNumber
的单元格值。
但是,如果值是列表中最后一个示例中的字符串,则会出现Type Missmatch错误。有什么帮助吗?
答案 0 :(得分:6)
If会尝试解析Or的两边,无论第一个是false还是true,如果CDbl(lngPNumber)
是文本,lngPNumber
将会出错。
将它们分成两部分。
Dim lngPNumber As Variant
lngPNumber = ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Value
If Not IsNumeric(lngPNumber) Then
lngPNumber = CStr(ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Text)
ElseIF CDbl(lngPNumber) <> Round(CDbl(lngPNumber)) Then
lngPNumber = CStr(ActiveSheet.Cells(objInitialCell.Row, INT_ACCP_COL_PNUMBER).Text)
End If
现在只有当lngPNumber
是数字时才会触发第二个。