显示货币的VBA文本框

时间:2011-05-12 15:21:14

标签: excel validation vba userform

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

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

也见过一些cDbl

无论我尝试什么,它都不会让我输入的内容超过我输入的第一个数字。我需要帮助。谢谢!

4 个答案:

答案 0 :(得分:4)

用户输入数据时格式化非常棘手。输入完成后格式化可能更好 如果条目被视为无效,则还可以验证条目并恢复旧值

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

答案 1 :(得分:1)

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

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

然后创建CurrencyTransform函数以修改它在TextBox中显示的内容。

答案 2 :(得分:0)

试试这个......

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

答案 3 :(得分:0)

试试这个:

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

这对我很有用,所以它也应该对你有帮助。

如果要进行涉及多个文本框的计算,请不要在文本框的名称后面使用.value。相反,在文本框的名称前面使用val(,然后使用结束括号。我用.value得到了奇怪的结果。例如,TextBox1.Value + TextBox2.Value的{​​{1}}等于$ 25且TextBox1.Value等于$ 75,而不是$ 100,我会得到“$ 25 $ 75”。