将VBA字符串转换为Double [英] Convert VBA String to Double

查看:1651
本文介绍了将VBA字符串转换为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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆