我有一个表单,其中包含许多用于用户输入的文本框(这是在用户表单中,而不是在电子表格中)。我有几个与货币相关的方框,我需要它们显示逗号和小数点,因为用户在框中输入了它们的标准。到目前为止,我已经在网上找到了一堆相同的公式,但当我输入我的数字时,它会以4.00(如果我先点击4)和所有我可以改变之后是第二个0.这是我看到的类似的东西在线:
textbox1 = format(textbox1, "$#,##0.00")
也见过一些cDbl
无论我尝试什么,它都不会让我输入的内容超过我输入的第一个数字。我需要帮助。谢谢!
答案 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”。