使用组合框的值来格式化未绑定的文本框

时间:2019-10-05 02:47:05

标签: vba ms-access access-vba ms-access-forms

新手/中级访问用户。

我在MS Access(O365 ProPlus)中有一个表单,该表单具有基于六列查询的ComboBox。

更新后,我想从ComboBox的列中提取Value并将其填充在未绑定的文本框中。但是,格式必须为“货币”,并且不能正确设置文本框的“表单属性”字段中的“货币”格式。

当以这种方式限制成功的方式拉出ComboBox列值时,我曾尝试在Control Source属性中设置格式。它显示了货币格式,但是当我稍后尝试在文本框中使用该值以在表单上其他位置的计算(总)总值字段中使用时,它仅被识别为文本。

TotalValue文本框仅将文本框与货币美元符号连接在一起。

Combobox1_AfterUpdate: ()
Textbox1 = Combobox1.Column (2)
Textbox2 = Combobox1.Column (3)
Textbox3 = Combobox1.Column (4)
TotalValueTextbox = Textbox1 + Textbox2 + Textbox3

预期结果是将上述文本框的数值加起来的一个数字。相反,我得到number1number2number3的感觉就像是串联文本字符串一样。

货币格式(如果它在前面的文本框中可用)带有美元符号,但小数点不带,它连接了值而不是添加它们。

我什至尝试添加一个第三级测试文本框,并使它的“控制源”值等于其中一个文本框的12倍(任意值),并且可以正确相乘,但是当涉及多个文本框时,使用上面列出的总和计算就没有了不行。

2 个答案:

答案 0 :(得分:0)

使用带有Currency参数的Format()函数会导致带有$符号的字符串。加号(+)字符是旧BASIC和算术运算符遗留下来的连接运算符。在某些情况下,连接将具有优先级,就像您在窗体上的文本框遇到的那样。

将$放在文本框旁边的标签中,而不是格式化表单上的数据。

否则,直接参考组合框列进行计算。

= Combobox1.Column(2) + Combobox1.Column(3) + Combobox1.Column(4)

答案 1 :(得分:0)

问题是,组合框始终返回文本。如果您使用数字或货币填充它们,这些将使用默认设置进行格式化。

因此,添加一些额外的列以保留您的金额,而无需使用货币格式,而是使用 Str 输入文本。在组合框的源查询中,添加三列:

Column5: Str([Amount1]
Column6: Str([Amount2]
Column7: Str([Amount3]

然后使用 Val 将值转换为数字:

TotalValueTextbox = Val(Combobox1.Column(5)) + Val(Combobox1.Column(6)) +Val(Combobox1.Column(7))

最后,将 TotalValueTextbox Format 属性指定为 Currency ,然后在Combobox1中,将额外列的列宽设置为0(零)。