2

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

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

也看到了一些与 cDbl

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

4

4 回答 4

7

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

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
于 2011-05-13T02:01:32.113 回答
1

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

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

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

于 2011-05-12T15:59:37.840 回答
0

试试这个...

Private sub textbox1_AfterUpdate()
    textbox1 = format(textbox1, "$#,##0.00")
end sub
于 2013-10-25T03:09:09.473 回答
-1

试试这个:

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

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

如果要进行涉及多个文本框的计算,请不要.value在文本框名称之后使用。相反,val(在文本框的名称之前使用,而在其后面加上一个结束括号。我使用.value并得到了奇怪的结果。例如,如果 100TextBox1.Value + TextBox2.Value美元TextBox1.Value等于 25 美元并且TextBox2.Value等于 75 美元,我会得到“25 美元 75 美元”。

于 2015-04-12T22:53:50.237 回答