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

时间:2016-03-21 14:23:12

标签: excel vba excel-vba casting runtime-error

我被困在这里一段时间并且出现运行时错误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)

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

我还手动将col C和K格式化为Numbers。

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

1 个答案:

答案 0 :(得分:2)

你需要 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

enter image description here