显示货币的VBA文本框

我有一个用于用户input的文本框(这是在用户表单中,而不是在电子表格上)的表单。 我有几个与货币有关的框,我需要它们显示逗号和小数点,因为用户在框中input他们的标准。 到目前为止,我已经在网上find了一堆相同的公式,但是当我input我的数字到盒子里时,它会随着4.00(如果我先打4)和所有我可以改变之后,是第二个0.这里是类似的东西线上:

textbox1 = format(textbox1, "$#,##0.00") 

也看到一些与cDbl

无论我尝试什么,都不会让我input比input的第一个数字更多的东西。 我需要帮助。 谢谢!

格式化为用户键入数据变得非常棘手。 input完成后格式可能会更好。
如果条目被认为无效,条目也可以被validation并且旧值被恢复

 Dim TextBox1oldValue As String Private Sub TextBox1_AfterUpdate() If IsNumeric(TextBox1) Then TextBox1 = Format(TextBox1, "$#,##0.00") Else TextBox1 = TextBox1oldValue End If End Sub Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) If IsNumeric(TextBox1) Then TextBox1oldValue = Format(TextBox1, "$#,##0.00") End If End Sub Private Sub UserForm_Initialize() TextBox1oldValue = "$0.00" TextBox1 = "$0.00" End Sub 

您需要使用TextBox Change事件,如:

 Private Sub TextBox1_Change() If TextBox1 = vbNullString Then Exit Sub If IsNumeric(TextBox1) Then CurrencyTransform(TextBox1) End Sub 

然后创buildCurrencyTransform函数来修改它在TextBox中显示的内容。

试试这个简单的…

 Private sub textbox1_AfterUpdate() textbox1 = format(textbox1, "$#,##0.00") end sub 

尝试这个:

 Private Sub TextBox1_Change() TextBox1.Value = Format(TextBox1.Value, "$#,##0.00") End Sub 

这工作对我来说很好,所以它也应该帮助你。

如果要执行涉及多个文本框的计算,请勿在文本框名称后面使用.value 。 相反,使用val(在文本框的名称前面加上一个括号,然后使用.value并得到奇怪的结果),而不是像TextBox1.Value + TextBox2.Value $ 100,而TextBox1.Value是相等的到$ 25和TextBox2.Value相当于$ 75,我会得到“$ 25 $ 75”。