Ich habe ein Benutzerformular, das Textfelder mit mehreren Formaten enthält. Ich habe die Initialize als leer ("") und formatiere sie dann mit afterupdate(). Das alles funktioniert gut, meine Probleme kommen von der Möglichkeit, dass der Benutzer die Daten beim ersten Versuch misslingt oder ziellos auf den Bildschirm klickt. Nachdem Sie einen Wert eingegeben haben, formatiert er ihn korrekt, wenn Sie aus dem Textfeld wechseln. Aber wenn Sie das Textfeld erneut auswählen und dann wieder weggehen, wird der Wert gelöscht. Und wenn Sie dies mit dem Textfeld tun, das als Prozent formatiert ist, kommt es tatsächlich zu einem Fehler bei der Nichtübereinstimmung. HierFormatieren von Textfeldern in einem Benutzerformular
ist ein Stück meines aktuellen Code:
Private Sub UserForm_Initialize()
ValueAnalysisTextBox.Value = ""
CapRateTextBox.Value = ""
End Sub
Private Sub ValueAnalysisTextBox_AfterUpdate()
ValueAnalysisTextBox.Value = Format(Val(ValueAnalysisTextBox.Value), "$#,###")
End Sub
Private Sub CapRateTextBox_AfterUpdate()
CapRateTextBox.Value = Format(Val(CapRateTextBox.Value)/100, "Percent")
End Sub
Irgendwelche Gedanken darüber, wie dies zu bereinigen, wäre toll.
Die Formatierung sollte während der Codeausführung erfolgen . Wenn Sie möchten, dass der Benutzer sieht, wie das Endergebnis aussehen wird, empfehle ich die Verwendung von Etiketten anstelle von Textfeldern, um den formatierten Text anzuzeigen. – tigeravatar
Wenn Sie möchten, dass der formatierte Text in das Textfeld eingefügt wird, müssen Sie im Code "After_Update" eine Überprüfung durchführen, um festzustellen, ob der Textboxwert bereits im erforderlichen Format vorliegt, und wenn ja, nehmen Sie keine Änderungen vor. – tigeravatar