2016-06-07 5 views
1

Ich habe ein Formular mit dynamisch erstellten Textfelder erstellt. Ich muss die Boxen in Währungsformat neu formatieren, wenn der Benutzer die Zelle verlässt. Es gibt kein TextBox_Exit-Ereignis für dynamisch erstellte Formulare. Gibt es eine Problemumgehung?textbox_exit auf VBA dynamische Steuerelementumgehung

Ich habe das Change Event und das Tastendruckereignis versucht, aber ich bekomme keine nützliche Ausgabe. Gibt es eine Möglichkeit, das Ereignis zu simulieren oder etwas zu tun, um das richtige Format zu erhalten, anstatt eine Schaltfläche "Textfelder formatieren" zu erstellen?

Ich kann es "vortäuschen", indem Sie die Werte in Excel ablegen, die Zelle als Währung formatieren und dann wieder zum Benutzerformular im richtigen Format zurückholen, aber das hilft mir nicht beim Eingeben des Benutzers Daten. irgendwelche Ideen?

+1

Was ist eine Klasse zu schreiben, die das Textfeld kapselt? Dann können Sie das Exit-Ereignis in der Klasse behandeln und die Formatierung für alle von Ihnen erstellten Objekte (Textfelder) beibehalten? – PeterT

+2

Das 'Exit'-Ereignis wird für ein 'WithEvents'-Textfeld nicht angezeigt. Lies hier Post 6 für eine Alternative: http://www.mrexcel.com/forum/excel-questions/859966-textbox-created-run-time-wont-fire-some-events.html – Rory

+0

@PeterT Ich habe keine Ahnung, wie ich das machen soll. Dies ist mein erster Lauf bei dynamischen Steuerelementen, und ich bin mir nicht sicher, wie man ein Textfeld einkapselt. –

Antwort

0

Darf ich vorschlagen, das Änderungsereignis zu verfolgen und so etwas wie das Folgende zu tun?

Private Sub TextBox1_Change() 
If InStr(TextBox1.Value, "$") Then 
Label1.Caption = "Money" 
Else 
Label1.Caption = "Cents" 
End If 
End Sub 

enter image description here