VBA: Button, wechsle Dich!

Format-Schaltflächen ökonomisch programmieren

Von: Lorenz Hölscher
Stand: 4. Mai 2011
Anmelden um Kommentare zu schreiben

Downloads zu diesem Beitrag

Über den Autor: Lorenz Hölscher

bild80517

Lorenz Hölscher ist freiberuflicher Dozent, Berater und Programmierer mit Schwerpunkt Anwendungs-Programmierung. Vorrangig widmet er sich Access, Word und Excel sowie begleitenden grafischen Arbeiten. Er legt viel Wert auf benutzerfreundliche Oberflächen und ordentliches Design in Optik und Programmierung. Zu Hilfe kommen ihm da seine langjährigen "branchenfremden" Erfahrungen als Architekt, Layouter und Designer.

Lorenz Hölscher bietet eigene Hilfeseiten an und hat bei Microsoft Press mehrere Bücher veröffentlicht zu Access 2007, Access 2007 VBA, Word 2007 VBA und Access 2010.

Beiträge des Autors als Atom-Feed Atom-Feed: Neues von akademie.de

Eingabefelder formatieren

Aktive Eingabe hervorheben

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:

Private Sub HoleButtons()
	Dim intZaehler As Integer

	For intZaehler = 0 To Me.Controls.Count - 1
		Me.Controls(intZaehler).ForeColor = vbBlack
	Next

	m_strNameAktiv = Mid(Me.ActiveControl.Name, 4)
	Set m_ctlEdit = Me.Controls("edt" & m_strNameAktiv)

	Me.Controls("lbl" & m_strNameAktiv).ForeColor = vbBlue
	With Me.tglFett
		.Top = m_ctlEdit.Top
	End With
	With Me.tglKursiv
		.Top = m_ctlEdit.Top
	End With
	With Me.tglUnterstrichen
		.Top = m_ctlEdit.Top
	End With
End Sub

Hier erweist sich die Ungarische Notation als enorm praktisch, weil zu einem Eingabefeld edtNachname nur die ersten 3 Zeichen ersetzt werden müssen, um dessen Beschriftung lblNachname zu finden.

Da ein Kontrollelement auf einem Dialog ja nicht nur als Me.lblNachname, sondern eben auch als Me.Controls("lblNachname") angesprochen werden kann, lässt sich mit der zweiten Version dessen Name aus einer Zeichenkette zusammensetzen. Die dritte Variante sehen Sie übrigens in der Schleife zum schwarz färben, denn dort werden die Kontrollelemente über ihre Indexposition innerhalb der Controls-Auflistung angesprochen.

Eingabefelder formatieren

Jetzt fehlt unter anderem noch die Fähigkeit der Schaltflächen, den Inhalt der Eingabefelder auch wie gewünscht zu formatieren. Den (gedrückten) Zustand einer solchen Umschaltfläche fragen Sie in VBA über ihren Value ab, der zwischen True (gedrückt) und False (nicht gedrückt) wechselt. Entsprechend kurz lässt sich der Code formulieren:

Private Sub tglFett_Click()
	m_ctlEdit.Font.Bold = Me.tglFett.Value
End Sub

Private Sub tglKursiv_Click()
	m_ctlEdit.Font.Italic = Me.tglKursiv.Value
End Sub

Private Sub tglUnterstrichen_Click()
	m_ctlEdit.Font.Underline = Me.tglUnterstrichen.Value
End Sub

Die Schaltflächen können jetzt die jeweils danebenliegenden Eingabefelder formatieren, wie die folgende Abbildung zeigt:

Diese Seite ist für Mitglieder von akademie.de reserviert.

Möchten Sie die Mitgliedschaft 14 Tage kostenlos testen und den Beitrag komplett lesen?

Ich bin bereits Mitglied
Jetzt Probemitglied werden
Ich kann in den 14 Tagen Probezeit formlos z.B. per E-Mail stornieren. Wenn ich das nicht tue, entscheide ich mich für ein