2016-04-01 10 views
0

Ich habe eine Reihe von ActiveX-Textfeldern, und ich möchte das Zahlenformat für eine bestimmte Anzahl von Textfeldern ändern.VBA-Nummernformat: Format für mehrere ActiveX-Textfelder ändern

Letztendlich möchte ich nur ein Unterprogramm, das ich alle Textfelder meiner Wahl codieren kann - textbox1, textbox2, textbox15 - die Nummer des Textfelds ist irrelevant und das Zahlenformat wird wie "###, ###, # ## ". Zum Beispiel ...

Private sub textNumFormat_<whatever>() TextBox1.Text = Format(TextBox1.Text, "###,###,###") TextBox2.Text = Format(TextBox2.Text, "###,###,###") TextBox15.Text = Format(TextBox5.Text, "###,###,###") end sub

Ich versuche nicht, ein Bündel von Textbox subs zu vermeiden. Beispiel

Private Sub TextBox1_Change() TextBox1.Text = Format(TextBox1.Text, "###,###,###") End Sub

und dann eine weitere Unter ...

Private Sub TextBox2_Change() TextBox2.Text = Format(TextBox2.Text, "###,###,###") End Sub

und eine andere Unter ...

Private Sub TextBox15_Change() TextBox15.Text = Format(TextBox15.Text, "###,###,###") End Sub

hoffen, dass es Sinn macht. Vielen Dank!

Ich habe versucht:

Private Sub TextBox1_Change() TextBox1 = Format(TextBox1.Value, "###,###,###") TextBox2 = Format(TextBox1.Value, "###,###,###") TextBox5 = Format(TextBox1.Value, "###,###,###") TextBox10 = Format(TextBox1.Value, "###,###,###") End Sub

aber es funktioniert nicht.

Ich habe auch versucht, einen allgemeinen Sub-Namen zu erstellen und den Formatcode, aber auch nicht funktioniert.

Wenn jemand mir helfen könnte, würde das sehr geschätzt werden.

Danke.

Antwort

0

Wenn dies Access ist, müssen Sie die Eigenschaft .Format des Textfelds festlegen. Sie versuchen einfach, das Textbox-Objekt gleich einem Format festzulegen. Objekt kann nicht gleich formatieren. Probieren Sie etwas wie folgt aus: TextBoxt.Format("###,###,###")

Wenn dies eine andere Office VBA-Anwendungen, dann werden Sie wollen, um den Text zu formatieren, und legen Sie die .Text Eigenschaft Textbox auf die neu formatierten Text wie folgt aus: TextBox1.Text = Format(TextBox1.Text, "###,###,###")


Bezüglich mein Kommentar unten. Warum nicht einfach das Ereignis workbook_open verwenden?

Private Sub Workbook_Open() 
    TextBox1 = Format(TextBox1.Value, "###,###,###") 
    TextBox2 = Format(TextBox1.Value, "###,###,###") 
    TextBox5 = Format(TextBox1.Value, "###,###,###") 
    TextBox10 = Format(TextBox1.Value, "###,###,###") 
End Sub 
+0

Vielen Dank für Ihr Feedback. Ich kodiere es in Excel. Leider löst es nicht meine anfängliche Frage nach einem Sub zu haben, dass ich alle/alle Textfelder auflisten und das Format ändern könnte. – Tim

+0

Mein schlechtes. Ich dachte, dein Problem war, dass der Code nicht funktionierte. Ich habe gerade Ihren Code getestet, und er ändert das Zahlenformat aller Ihrer Textfelder, wenn Textbox1 geändert wird. Ist Ihre Frage, wie man ein Untersystem erstellt, das das Format mehrerer Textfelder ändert, wenn sich eines ändert? Wenn ich zum Beispiel textbox5 eintippe, ändern sich alle, und wenn ich textbox2 eintippe, ändern sich alle? Wenn ja, was bestimmt die Formatierungslogik? IE, wie bestimmen wir, welches Format verwendet wird, wenn 2 Änderungen gegenüber der Formatierung bei 5 Änderungen verwendet wird? – Tim

+0

Ist [dies] (http://stackoverflow.com/questions/10655262/active-control-change-event-ms-access) was Sie suchen? – Tim