【发布时间】:2019-06-19 22:24:21
【问题描述】:
我有一个从 Access 表中检索价格金额的用户表单。价格可以是小数。要计算一条线的总价格,我必须将它乘以数量。
一个典型的例子是:
Price = 10.45-
Quantity = 1
从逻辑上讲,我想要的是Tot = 10.45*1 = 10.45。但是 VBA 给了我1045 没有小数点。
我浏览了论坛并看到了一些建议(转换为小数、使用模数、声明双精度、单精度、浮点数……),但结果没有改变。
我使用的代码是这样的:
Me.lblPU = (rs!price - (rs!price * (5 / 100)))
Me.lblPriceTot = (CDec(Me.lblPU) * CDec(Me.Qty))
lblPU 字段给出了正确的数字:10.45
但是lblPriceTot 字段结果是1045。
我没有声明有关此字段的任何变量,因为它们实际上是从 Access 中检索的,因此不是由用户编码的。
提前感谢您的帮助!
【问题讨论】:
-
如果 lblPU 真的是 10.45 并且数量真的是 1,很难看出这是怎么发生的
-
如果您使用点作为千位分隔符,那么通常 10.45 表示 1045。代替字符串使用数字或根据区域设置使用正确的小数分隔符。
-
如果区域设置使用逗号,那么他的标签将显示 10,45 但它显示 10.45 所以逗号可能不是问题。
-
检查 Excel 选项的值->高级->使用系统分隔符.. 似乎没有勾选。
-
嗨@TimWilliams,变量
rs!Price = 11。字段lblPU的值是通过获得rs!Price5% 的折扣来获得的。在这种情况下,整数 (11) 乘以小数 (5%),结果与小数 (10.45) 是正确的。但是,当在下面的行 (10.45*1) 上发生相同类型的计算时,结果将不带小数点。抱歉回复晚了,时差
标签: vba ms-access decimal modulus