Microsoft Office Tutorials and References
In Depth Information
Private Sub TextBox_C_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox_C.Value = Format(TextBox_C.Tag, "#,##0.00")
End Sub
Private Sub Kalkulation()
If TextBox_B.Tag <> 0 Then
TextBox_C.Tag = TextBox_A.Tag / TextBox_B.Tag
TextBox_C.Value = Format(TextBox_C.Tag, "#,##0.00")
Else
TextBox_C.Value = "Div/0!"
TextBox_C.Tag = "Div/0!"
End If
End Sub
Der entscheidende Trick ist die Tag -Eigenschaft, zu der die Excel-Hilfe kurz und bün-
dig sagt:
Tag: Speichert zusätzliche Informationen über ein Objekt.
Sie fungiert also wie eine Variable, ein kleiner Zwischenspeicher, nur dass er, im Gegen-
satz zu anderen Variablen, an seinen „Wirt“, das entsprechende Textfeld, gebunden ist.
Und mit diesem Zwischenspeicher kann auch gerechnet werden, vorausgesetzt bei Ini-
tialisierung der Userform wird er auf 0 gesetzt.
Wenn sich der Wert der Textfelder A und B ändert, wird ihr Wert ( Value -Eigenschaft)
an den Tag -Zwischenspeicher weitergereicht. Nebenbei wird dabei mit der VBA-
Funktion IsNumeric geprüft, ob der Wert überhaupt eine zulässige Zahl ist, nur dann
wird er an Tag übergeben. Danach wird die Kalkulation aufgerufen.
In der Prozedur Kalkulation erfolgt die Berechnung primär über die Tag -Eigenschaft.
Das Ergebnis wird dann in einem zweiten Schritt formatiert und an die sichtbare
Value -Eigenschaft übertragen.
Vorteilhaft ist nun, dass die Textfelder auf so viele verschiedene Ereignisse unter-
schiedlich reagieren können. Wir machen uns hier die Ereignisse
Enter – bei Aktivierung des Textfeldes
Exit – bei Verlassen des Textfeldes
zunutze. Bei Aktivierung wird der unformatierte Wert sichtbar, und bei Verlassen
wird er wieder formatiert. Dabei geht der unformatierte, korrekte Wert eben nicht
verloren, sondern versteckt sich im Hintergrund und macht sich einen schönen Tag .
Search JabSto ::




Custom Search