如何知道单元格的数据类型

How to know datatype of a cell

我被困在这里有一段时间了,出现 运行 时间错误 13 - 类型不匹配。

Dim Qty, ItemCost, Tot
Qty = wi.Range("C" & i).Value2              'Qty
ItemCost = wi.Range("K" & i).Value2         'Item Cost
Tot = CInt(Qty) * CInt(ItemCost)

当我在 C 和 K 列单元格上尝试 IsNumeric 时,它们是正确的,但我仍然收到该错误。

我也试过:

Tot = Qty * ItemCost

Tot = CDbl(Qty) * CDbl(ItemCost)

Tot = Qty * CInt(ItemCost)

以及将其转换为整数或双精度数据类型的其他不同组合。

我还手动将列 C 和 K 格式化为数字。

错误仍然存​​在。我不知道我哪里错了怎么办?

你需要2个东西:

  • 创建数值变量的更好方法
  • 查看问题所在的更好方法

考虑:

Sub dural()
    Dim Qty As Long, Qty_Text As String, wi As Worksheet, i As Long
    Set wi = ActiveSheet
    i = 1

    Qty_Text = Trim(wi.Range("C" & i).Text)
    On Error GoTo wtf
        Qty = CLng(Qty_Text)
    On Error GoTo 0
    Exit Sub
wtf:
    MsgBox wi.Name & vbCrLf & i & vbCrLf & wi.Range("C" & i).Text
    On Error GoTo 0
End Sub