Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TextBox1中的EXCEL VBA货币格式_Excel_Vba_Format_Currency - Fatal编程技术网

TextBox1中的EXCEL VBA货币格式

TextBox1中的EXCEL VBA货币格式,excel,vba,format,currency,Excel,Vba,Format,Currency,我想用以下内容格式化TextBox1中的值: 马来西亚林吉特货币(RM),不带括号 小数点后2位,例如10.00 RM 即使用户未输入任何值,例如RM 0.00,也要使格式显示在TextBox1中 仅允许用户输入整数,例如,当用户在TextBox1中键入1234时,TextBox1值将从RM 0.00更改为RM 12.34。用户不必点击“”,当用户在TextBox1中按1234时,整数将向前移动,例如RM 0.01->RM 0.12->RM 1.23->RM 12.34 如果我的问题中有任何误解

我想用以下内容格式化
TextBox1
中的值:

  • 马来西亚林吉特货币(RM),不带括号
  • 小数点后2位,例如10.00 RM
  • 即使用户未输入任何值,例如RM 0.00,也要使格式显示在
    TextBox1
  • 仅允许用户输入整数,例如,当用户在
    TextBox1
    中键入1234时,
    TextBox1
    值将从RM 0.00更改为RM 12.34。用户不必点击“
    ”,当用户在
    TextBox1
    中按1234时,整数将向前移动,例如RM 0.01->RM 0.12->RM 1.23->RM 12.34

  • 如果我的问题中有任何误解,请让我知道,我会纠正它。提前谢谢大家。

    首先:您的号码格式很简单。打开“数字格式”对话框,并使用以下字符串创建自定义格式:

    “RM”#,#0.00

    秒:要将空单元格显示为零,有两个选项

  • 如果单元格是方程式或其他地方数据的结果,则可以使用 公式;e、 g.,=如果(A1=”,0,A1),则取A1的值 除非它为空,否则在这种情况下它将为0
  • 您还可以将工作表设置为显示“下的所有零值” “文件”选项卡中的选项
  • 第三位(也是最后一位):至于小数的自动放置,这并不少见。只需按照本教程中的步骤进行操作:

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

    编辑:

    乍一看,我认为您需要单元格格式方面的帮助,但您需要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”之类的值时不会弹出“无效输入”消息框。不幸的是,我现在没有时间为您写出代码。

    我想直接在文本框中格式化,而不是在单元格中。对不起,如果这让你感到困惑,我想知道这是否可能。谢谢你的努力,非常感谢!