0

我想TextBox1用以下格式格式化值:

  1. 没有括号的马来西亚林吉特货币(RM)
  2. 将其设为小数点后 2 位,例如 RM 10.00
  3. TextBox1即使用户没有输入任何值,例如 RM 0.00 ,也可以显示格式
  4. 只允许用户输入整数,例如当用户输入 1234 时TextBox1TextBox1值将从 RM 0.00 更改为 RM 12.34 用户不必点击 ' .',整数只会向前移动,例如 RM 0.01 -> RM 0.12 -> RM 1.23 -> RM 12.34 因为用户在TextBox1.

如果我的问题中其他地方有任何误解,请告诉我,我会更正。谢谢大家。

4

1 回答 1

0

第一:你的数字格式很简单。打开数字格式对话框并使用此字符串创建自定义格式:

"RM"#,#0.00

第二:要将空单元格显示为零,您有两个选择。

  1. 如果单元格是其他地方的方程式或数据的结果,则可以使用公式;例如,=if(A1="",0,A1) 这将采用 A1 的值,除非它为空,在这种情况下它将为 0。
  2. 您还可以将工作表设置为在文件选项卡的选项下显示所有零值。

第三(也是最后):就小数的自动放置而言,这并不少见。只需按照本教程中的步骤操作:

Excel中如何自动插入小数点

我希望这会有所帮助,祝你好运!

编辑:

乍一看,我认为您需要有关单元格格式的帮助,但您需要有关 VBA 用户窗体和/或工作表本身中的文本框控件的帮助。完成此任务所需的工具是输入掩码。但是,据我了解,目前 VBA 用户表单中没有对此的内置支持。当用户更改或退出框时,您可以构建代码来执行此操作。

我会在他们退出时推荐代码,该代码将首先验证输入以确认它是数字,然后更改值以匹配所需的格式。这是一个例子:

Private Sub myTextbox_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim myVal As String

myVal = Trim(myTextbox.Value)

If myVal = "" Then Exit Sub 'Ignore this subroutine if the box is empty.

If IsNumeric(myVal) = False Then 'If the input is not a number, ask for correct input.
    MsgBox "Please enter a number value."
    myTextbox.SetFocus
    Exit Sub
ElseIf InStr(1, myVal, ".", vbTextCompare) > 0 Then     'If the input includes decimal, use it.
    myTextbox.Value = "RM " & Format(myVal, "#,##0.00")
ElseIf InStr(1, myVal, ".", vbTextCompare) = 0 Then     'If the input doesn't include decimal, enter one and divide by 100.
    myTextbox.Value = "RM " & (Format(myVal, "#,##0.00") / 100)
End If


End Sub

如果你想变得非常花哨,你可以先在输入中搜索“RM”。这将确保在用户输入诸如“RM 123.45”之类的值时不会弹出“无效输入”消息框。不幸的是,我目前没有时间为您编写该代码。

于 2013-01-04T14:52:00.093 回答