2

ユーザー入力用のテキスト ボックスが多数あるフォームがあります (これは、スプレッドシートではなくユーザー フォームにあります)。通貨に関連するいくつかのボックスがあり、ユーザーがボックスに基準を入力するときにコンマと小数点を表示する必要があります。これまでのところ、オンラインで同じ式をたくさん見つけましたが、ボックスに番号を入力すると、4.00 になり (最初に 4 をヒットした場合)、その後変更できるのは 2 番目の 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 に答える