2016-08-04 7 views
0

私は本当にこの1つと混同しています。私はそれがおそらく単純なものだと知っていますが、私はそれを理解できないようです。私はessentailly価格計算機を作成しており、これはマクロの最も重要な部分です。値が正しく返されません

Dim z As Double 
For z = 7 To 8 Step 1 
    If ActiveSheet.Cells(z, 10).Value = "" Then 

    '''Dim Ref1 As Double 
    '''Set Ref1 = Sheets("Ref").Cells(o, 4).Value 
    Dim o As Double 
    For o = 5 To 150 Step 1 
     If ActiveSheet.Cells(z, 20).Value = Sheets("Ref").Cells(o, 3).Value Then 
      MsgBox "Found: " & Sheets("Ref").Cells(o, 4).Value 
      ActiveSheet.Cells(z, 10).Value = Sheets("Ref").Cells(o, 4).Value 
      Exit Sub 
     Else 
     End If 
    Next o 

    Else 
    End If 
Next z 

したがって、MsgBoxは私が探している値を返しますが、小数点以下は四捨五入されています。私はもっ​​と必要ですが、それはMsgBoxにある値ではなく、セルにゼロが設定されているという事実ほど大きな問題ではありません。

Sheets("Ref").Cells(o, 4).Value 

あなたは、私が値(Ref1の)ダブル変数を作成し始めた見ることができます。私は、彼らがともに考えると、なぜ把握することはできません。私はおそらく、 '.Value'がセルに値を入力するときに整数に丸められていると思っていましたが、これを使用しようとすると400のエラーが発生しました。

ご協力いただければ幸いです。

+0

あなたが0小数を表示するように設定されていないことを確認するために移入しているセルのフォーマットをチェックしましたか? – sous2817

+0

はい、私は実際には、これでforループを実行する前にVBAで再フォーマットしようとしていました。 'ActiveSheet.Range( "J7:J300")NumberFormat = "$#、## 0.0000000000" ' ActiveSheet.Range( "J7:J300")。NumberFormat = "0.0000000000" ゼロ値にゼロを追加するだけです。 (私は2つの異なるフォーマットを試していました) – theMagicOne

+0

関連はありませんが、 'o'は' Double'ではなく、 'Double'でなければなりません。 – Comintern

答えて

-1

私は前に正しい軌道に乗っていたと思うので、値をダブルとして定義しようとすると400エラーが修正されました。これは私の最終的な作業コードです:

'Find Price 
Dim z As Long 
For z = 7 To 8 Step 1 
If ActiveSheet.Cells(z, 10).Value = "" Then 


    Dim o As Long 
    For o = 5 To 150 Step 1 
     If ActiveSheet.Cells(z, 20).Value = Sheets("Ref").Cells(o, 3).Value Then 

      Dim RefVal As Double 
      RefVal = Sheets("Ref").Cells(o, 4).Value 
      ActiveSheet.Cells(z, 10).Value = RefVal 

     Else 
     End If 
    Next o 

Else 
End If 
Next z 
関連する問題