VBA: Button, wechsle Dich!

Format-Schaltflächen ökonomisch programmieren

Bisher noch keine Bewertungen für diesen Artikel.

Wenn Sie auf einem selbstprogrammierten Dialog viele Textboxen mit Bedienungselementen brauchen, können Sie den Aufwand mit einem einfachen Trick reduzieren.

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:

mehr ...

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.

mehr ...

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:

mehr ...

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

mehr ...