2016-08-04 102 views
0

我真的很困惑這個。我知道這可能很簡單,但我似乎無法弄清楚。我很想創造一個價格計算器,這是宏觀中最重要的部分。值正在返回不正確

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返回我正在尋找的值,但它四捨五入到只有4個小數位。我需要更多,但這不是一個問題,因爲該單元格然後填充零,而不是在MsgBox中的值。我不明白爲什麼,考慮到他們都是:

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

你可以看到我開始創建一個Double變量的值(Ref1)。我認爲可能'.Value'在填充單元格時四捨五入爲整數,但在嘗試使用它時遇到了400錯誤。

任何幫助將不勝感激!

+0

您是否檢查過您要填充的單元格格式,以確保它未設置爲顯示0小數? – sous2817

+0

是的,我確實試圖用VBA重新格式化它,然後它運行for循環: 'ActiveSheet.Range(「J7:J300」)。NumberFormat =「$#,## 0.0000000000」 ' ActiveSheet.Range(「J7:J300」)。NumberFormat =「0.0000000000」 它只在零值上加零。 (我正在嘗試兩種不同的格式) – theMagicOne

+0

不相關,但'o'應該是'長',而不是'雙'。 – 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