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

Formatierten Text in ein Dokument schreiben

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

Dabei wird für jedes Kontrollelement auf dem Dialog geprüft, ob es eines vom Typ TextBox (Achtung: Großschreibung beachten!) ist. Dann wird dessen Text in das aktuelle Dokument geschrieben und mit einem Absatzzeichen ergänzt.

Sobald aber Texte formatiert werden sollen, müssen sie irgendwie markiert sein. Das sind sie aber so gerade nicht und der Aufwand wäre ziemlich hoch.

Alternativ könnten Sie vor dem Schreiben die Fett-/Kursiv-Formatierung einschalten (mit Selection.BoldRun bzw. Selection.ItalicRun). Genau genommen handelt es sich dabei aber um Umschalter. Sie müssten also vorher noch herausfinden, ob Sie vielleicht die Formatierung ungewollt ausschalten. Außerdem gibt es diese Technik nicht für die übrigen Formatierungen wie Unterstreichen.

Die Lösung besteht darin, dass Sie für den einzufügenden Bereich ein Range-Objekt rngHier zuweisen. Damit eine zufällige Markierung nicht überschrieben wird, wird vorher die Selection mit der Collapse-Methode auf ihr eigenes Ende reduziert und dann erst dem rngHier-Bereich zugewiesen.

Zu diesem Zeitpunkt ist dessen Breite 0, aber mit dem Hinzufügen von Text wird der rngHier-Bereich automatisch erweitert. Daher müssen Sie nicht die Länge des eingefügten Textes wissen, sondern können einfach anschließend den Bereich bearbeiten.

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