VBA – 为什么数字不能正确评估
我在VBA
有以下代码来计算一个variableslngPNumber
以将“正确的”值发送到一个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
可以是:
- 一个整数值(fi 4111)
- 一个浮点值(41.111111)
- 或只是一个string值(通常是“xxxx”,但也可以填充像“asdasd”,“dasdsadasd”等string)
在最后两种情况下,我想发送单元格文本,而不是获取lngPNumber
的单元格值。
但是, 如果值是类似于列表中最后一个示例中的string,则会出现“types不匹配”错误 。 任何帮助?
If将尝试parsingOr的两端,而不pipe第一个是false还是true,所以如果lngPNumber
是文本,则CDbl(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
是一个数字时,第二个才会触发。