Mit Bild
Mit Bild
Flexible Schaltflächen
Wenn Sie auf einem selbstprogrammierten Dialog viele Textboxen mit Bedienungselementen brauchen, können Sie den Aufwand mit einem einfachen Trick reduzieren: Anstatt zu jeder Textbox die passenden Buttons vorzubereiten, verschieben Sie diese einfach immer nur zur gerade aktiven Textbox. Das macht sowohl den Dialog übersichtlicher als auch den VBA-Code erheblich kürzer, wie Lorenz Hölscher weiß.
Auf vielen selbstprogrammierten Dialogen gibt es Eingabefelder mit der Möglichkeit, deren Inhalt fett, kursiv o. ä. zu formatieren. Das führt dann oft dazu, dass neben jedem Eingabefeld die Format-Schaltflächen eingebaut werden, wie es das folgende Beispiel zeigt:
Mit Bild
Spezielle Schaltflächen
Anders als Sie vielleicht vermuten, handelt es sich bei den hier eingesetzten Schaltflächen nicht um die üblicherweise verwendeten Befehlsschaltflächen. Diese werden nämlich angeklickt und springen dann wieder in den optisch ungeklickten Zustand zurück.
Da es sich bei der Formatierung um ein Umschalten (z.B. Fett ein/aus) handelt, sollten Sie auch die passenden Umschaltfelder (engl. toggle buttons) benutzen. Sie sehen gleich aus, verhalten sich aber anders. Wenn ein Benutzer diese anklickt, bleiben sie gedrückt. Erst mit dem nächsten Klick springen sie wieder heraus.
Mit Bild
Eingabefelder formatieren
Manchmal ist es hilfreich, die aktive Zeile hervorzuheben, vor allem, wenn die Beschriftungen daneben wegen unterschiedlicher Länge sehr weit entfernt stehen. Dazu können Sie einfach die zugehörige Beschriftung blau färben.
Sie dürfen nur nicht vergessen, die Beschriftung anschließend auch wieder auf schwarz zurückzustellen! Damit nun nicht auch noch jedes ..._Exit-Ereignis ausgeführt werden muss, können Sie viel bequemer (und allemal schnell genug) vor dem Blaufärben alle Kontrollelemente des Dialogs schwarz machen:
Mit Bild
Formatierten Text in ein Dokument schreiben
Jetzt funktioniert zwar alles auf dem Dialog, aber kein bisschen davon würde im Dokument ankommen. Das passiert in der btnOK_Click-Prozedur, braucht aber wegen der Formatierung noch ein wenig Vorbereitung. Normalerweise könnten Sie die Inhalte nämlich einfach so übertragen:
Private Sub btnOK_Click() Dim ctlJedes As Control With Selection For Each ctlJedes In Me.Controls If TypeName(ctlJedes) = "TextBox" Then .Collapse wdCollapseEnd .Text = ctlJedes.Value & vbCrLf End If Next End With Unload Me End Sub