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是一个数字时,第二个才会触发。