2016-03-21 12 views
0

私はしばらくここで立ち往生し、ランタイムエラーを取得しています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) 

私がIsNumericをCおよびK列セルで試したとき、それらは真実ですが、まだそのエラーが発生しています。

私も試みた:

Tot = Qty * ItemCost 

そして

Tot = CDbl(Qty) * CDbl(ItemCost) 

そして

Tot = Qty * CInt(ItemCost) 

そして、他の異なる整数に変換するの組み合わせまたは二重のデータ型を。

また、数値としてcol CとKを手動でフォーマットしました。

まだエラーがあります。私が間違っているところで何をすべきかわからないのですか?

+3

あなたが実際にあなたが望むタイプとして変数を宣言するのはどうですか?今は 'Variant'(デフォルトで** specific **変数を宣言していない)に設定されています。したがって、 'Dim QtyはDouble、ItemCostはDouble、TotはDouble'(またはDoubleの代わりにInteger)です。 –

+0

エラーを引き起こす原因を特定するために、個々の値を個別に変換することをお勧めします。 – Rory

+0

@ScottHoltzman私は特にDoubleと宣言しました。それから私は 'Qty'に値を代入するとエラーになります。つまり、col CにはIntのデータ型の値があります。 – newguy

答えて

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

    +0

    'On Error GoTo wtf'のボーナスポイントは' Sub dural() 'を何回も見たことがあります。 :) – Jeeped

    +1

    @ジープ私は次回より想像力を使用します................どのように 'サブジープ()'について? –

    関連する問題