将VBA字符串转换为Double [英] Convert VBA String to Double
问题描述
我使用VBA的非常基本的代码编码来创建一个模板,该模板从Windows中的其他屏幕提取数据。提取数字时,它们将格式化为字符串。我现在需要将字符串转换为双精度字,以便对其进行加/减。我一直在尝试一切,但似乎无法解决。
Me.salesprice = Trim(scrn.GetString(11,65,10))
'将被格式化如25,000.00
Me.salestax = Trim(scrn.GetString(12,66,10))
Me.pastdue = Trim(scrn.GetString(14,65,10))
Me。评估ppt = Trim(scrn.GetString(18,66,10))
Me.secdep =装饰(scrn.GetString(17,65,10))
评估ppt = 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 =销售价格+营业税+完税价格-secdep +评估ppt + uappt + lc
totalsalesprice =销售价格+糊状物
ppt =被评估的ppt + uappt
出现以下错误:
编译错误:未定义变量,并突出显示第一个
Convert函数。
解决方案您使用了错误的函数进行转换。您需要使用CDbl,在VBA中,我们具有以下转换函数:
numberDouble = CDbl( 10)'用于转换加倍
numberInteger = CInt( 12)'用于转换为整数
varString = CStr( 11)'用于转换为字符串
bool = CBool( true)'用于转换为布尔值
因此,如果更改Convert.toDouble,代码将如下所示:
Me.salesprice = Trim(scrn.GetString(11,65,10))
'这将被格式化为25,000.00
Me.salestax =修剪(scrn.GetString(12,66,10))
Me.pastdue =修剪(scrn.GetString(14,65,10))
Me.assessedppt = Trim(scrn.GetString(18,66,10))
Me.secdep = Trim(scrn.GetString(17,65,10))
评估ppt = CDbl(Me.assessedppt。价值)
uappt = CDbl(Me.uappt.value)
salesprice = CDbl(Me.salesprice.value)
salestax = CDbl(Me.salestax.value)
过期时间= CDbl(Me.pastdue.value)
lc = CDbl(frmDetails.lc.value)
总融资=销售价格+销售税+粘贴-secdep +被评估的ppt + uappt + lc
总销售价格=销售价格+粘贴
ppt =被评估的ppt + uappt
I am using the very basic coding of VBA for word to create a template that pulls data from other screens in windows. When it pulls the numbers, they are formatted as strings. I now need to get the strings to be converted to doubles, in order to add/ subtract them. I have been trying everything but cannot seem to figure it out.
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
When I do this, I get the following error:
Compile error: Variable not defined, and it highlights the first Convert function.
解决方案You're using the wrong function to convert. You need to use CDbl, in VBA we have the follow convert functions:
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
So if you change your Convert.toDouble, your code will looks like that:
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
这篇关于将VBA字符串转换为Double的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!