2017-02-27 110 views
1

我正在使用VBA的基本編碼來創建一個模板,用於從Windows中的其他屏幕提取數據。當它拉出數字時,它們被格式化爲字符串。我現在需要將字符串轉換爲雙精度,以便添加/減去它們。我一直在嘗試一切,但似乎無法弄清楚。將VBA字符串轉換爲雙精度值

Me.salesprice = Trim(scrn.GetString(11, 65, 10)) 
'This would be formatted as 25,000.00 
Me.salestax = Trim(scrn.GetString(12, 66, 10)) 
Me.pastdue = Trim(scrn.GetString(14, 65, 10)) 
Me.assessedppt = Trim(scrn.GetString(18, 66, 10)) 
Me.secdep = Trim(scrn.GetString(17, 65, 10)) 

assessedppt = Convert.ToDouble(Me.assessedppt) 
uappt = Convert.ToDouble(Me.uappt) 
salesprice = Convert.ToDouble(Me.salesprice) 
salestax = Convert.ToDouble(Me.salestax) 
pastdue = Convert.ToDouble(Me.pastdue) 
lc = Convert.ToDouble(frmDetails.lc) 

totalfinance = salesprice + salestax + pastdue - secdep + assessedppt + uappt + lc 
totalsalesprice = salesprice + pastdue 
ppt = assessedppt + uappt 

當我這樣做,我得到以下錯誤:

Compile error: Variable not defined, and it highlights the first Convert function.

+2

'Convert.ToDouble'是VB.NET,這是一種完全不同的語言。在VBA中,函數是'CDbl'。 – Comintern

回答

7

你使用了錯誤的功能轉換。您需要使用CDbl,在VBA我們有遵循轉換功能:

numberDouble = CDbl("10") 'For convert to double 
numberInteger = CInt("12") 'For convert to Integer 
varString = CStr("11") 'For convert to String 
bool = CBool("true") 'For convert to Boolean 

所以,如果你改變你的Convert.toDouble,你的代碼將看起來像這樣:

Me.salesprice = Trim(scrn.GetString(11, 65, 10)) 
'This would be formatted as 25,000.00 
Me.salestax = Trim(scrn.GetString(12, 66, 10)) 
Me.pastdue = Trim(scrn.GetString(14, 65, 10)) 
Me.assessedppt = Trim(scrn.GetString(18, 66, 10)) 
Me.secdep = Trim(scrn.GetString(17, 65, 10)) 

assessedppt = CDbl(Me.assessedppt.value) 
uappt = CDbl(Me.uappt.value) 
salesprice = CDbl(Me.salesprice.value) 
salestax = CDbl(Me.salestax.value) 
pastdue = CDbl(Me.pastdue.value) 
lc = CDbl(frmDetails.lc.value) 

totalfinance = salesprice + salestax + pastdue - secdep + assessedppt + uappt + lc 
totalsalesprice = salesprice + pastdue 
ppt = assessedppt + uappt 
+0

還有更多[轉換功能](https://msdn.microsoft.com/en-us/library/office/gg278896.aspx)比提到的4,但我想他們是主要的。 – YowE3K

相關問題