2017-02-27 9 views
1

Ich verwende die sehr einfache Codierung von VBA für Word, um eine Vorlage zu erstellen, die Daten von anderen Bildschirmen in Windows zieht. Wenn es die Zahlen zieht, werden sie als Strings formatiert. Ich muss nun die zu konvertierenden Zeichenfolgen in Doppelwerte umwandeln, um sie hinzuzufügen/zu subtrahieren. Ich habe alles versucht, aber ich kann es nicht herausfinden.Convert VBA String zu Double

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 

Wenn ich das tue, erhalte ich folgende Fehlermeldung:

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

+2

'Convert.ToDouble' ist VB.NET, das ist eine komplett andere Sprache. In VBA ist die Funktion "CDbl". – Comintern

Antwort

7

Sie die falsche Funktion zu konvertieren. Sie müssen CDbl verwenden, in VBA wir die folgen konvertieren Funktionen haben:

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 

Also, wenn Sie Ihre Convert.ToDouble ändern, sieht Ihr Code wie folgt aus:

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

Es gibt viel mehr [Konvertierungsfunktionen] (https://msdn.microsoft.com/en-us/library/office/gg278896.aspx) als die 4 erwähnten, aber ich denke, sie sind die wichtigsten. – YowE3K