2011-05-12 93 views
1

我有一個用於用戶輸入的多個文本框(這在用戶表單中不在電子表格中)。我有幾個與貨幣相關的框,我需要它們顯示逗號和小數點,因爲用戶在框中輸入標準。到目前爲止,我已經在網上找到了一堆相同的公式,但是當我輸入我的數字到盒子裏時,它會隨着4.00(如果我先打4)和所有我可以改變之後,這是第二個0.這裏有一些類似的我看到在線:顯示貨幣的VBA文本框

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

還出現了一些與cDbl

不管我怎麼努力它不會讓我輸入任何東西比我進入第一個數字更多。我需要幫助。謝謝!

+0

你能告訴我們更多你的代碼嗎?我沒有得到,如果你把'textbox1 =格式(textbox1,「$#,## 0.00)'在控制的變化事件或什麼。 – Oneide 2011-05-12 16:23:23

回答

3

格式化爲用戶鍵入數據變得非常棘手。輸入完成後格式可能會更好。
輸入也可以驗證和舊值恢復,如果進入視爲無效

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 
+0

謝謝!這個工作的關鍵(由於我缺乏知識)是在私人小組中,它不會在他們鍵入時添加逗號,但正如他們提到的那樣,他們可以在開箱後看到格式,這對我來說已經足夠了(我希望),所以謝謝。很棒! – bdubb 2011-05-13 12:50:04

1

您需要使用文本框Change事件,如:

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

然後創建CurrencyTransform功能來修改它顯示在文本框中。

0

儘量簡單,就是...

Private sub textbox1_AfterUpdate() 
    textbox1 = format(textbox1, "$#,##0.00") 
end sub 
0

試試這個:

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

這只是爲我工作很好,所以它應該對你有所幫助。

如果要執行涉及多個文本框的計算,請勿在文本框名稱後面使用.value。相反,在文本框的名稱前面使用val(,並在後面加上一個圓括號。我用.value並得到了奇怪的結果。例如,代替TextBox1.Value + TextBox2.Value的100美元,其中TextBox1.Value等於25美元,而TextBox2.Value等於75美元,我會得到「25美元75美元」。