VBA Text in Textbox markieren

VBA - Visual Basic for Application

In Microsoft Office-Anwendungen, wie Word, Excel und Outlook, kann man VBA benutzen, um sich lästiger wiederkehrender Aufgaben zu entledigen, indem man diese automatisiert. Das spart Klicks und Zeit. So könnte man zum Beispiel beim Empfang einer E-Mail automatisch Makros ausführen und einen Ordner erstellen und darin die E-Mail Anhänge speichern, oder die E-Mail in PDF umwandeln, etc., etc.

In einigen Fällen ist dabei auch eine Benutzerinteraktion in Form eines Formulars erforderlich, welches unter anderem Textboxes, also Textfelder enthalten kann, wie in dem nachfolgenden beispielhaften Formular, welches in der Entwurfsansicht dargestellt ist.

Screenshot Entwurfsansicht eines Beispielformulars
VBA Beispiel-Formular in der Entwurfsansicht

Solche Textfelder/Textboxes können aus irgendwelchen Gründen vorbelegt sein mit Text. Wie man die Textbox mit Text vorbelegen kann beim Öffnen des Formulars haben wir bereits in einem vorhergehenden Artikel gezeigt. Es erhöht jedoch sehr die Usability, wenn man den vordefinierten Text in der Textbox markiert.

Bestseller Nr. 1

Beim Öffnen des Formulars soll die Textbox aktiviert und der Text ausgewählt sein, damit man gleich lostippen kann oder per Copy&Paste einen anderen Text einfügen kann. Im Beispiel verwenden wir eine Textbox namens ‚MeineTextbox‘ und einen beispielhaften Button namens ‚btnMarkText‘, der innerhalb seines Klick-Events den Text markiert.

Screenshot VBA Textbox in der Entwurfsansicht mit Button zum Text markieren
Textbox Text markieren in der Entwurfsansicht

Das Ergebnis sieht dann wie folgt aus:

Screenshot fertiges Formular mit markiertem Text
fertiges Formular mit ausgewähltem Text

Dies erreicht man ganz einfach mit dem folgenden Code:

Private Sub btnMarkText_Click()
  Me.MeineTextBox.SetFocus
  Me.MeineTextBox.SelStart = 0
  Me.MeineTextBox.SelLength = Len(Me.MeineTextBox.Text)
End Sub

In VBA kann man sich auch ein wenig Tipp-Arbeit sparen, indem man die Kurzform mittels der With-Anweisung verwendet:

Private Sub btnMarkText_Click()
  With Me.MeineTextBox
    .SetFocus
    .SelStart = 0
    .SelLength = Len(Me.MeineTextBox.Text)
  End With
End Sub

Das Me bezieht sich auf das Formular. Das ist quasi der this-Zeiger aus anderen Programmiersprachen. Befindet sich der Code außerhalb des Formular-Codes dann muss man Me ersetzen durch den Formularnamen, z.B. MyForm1.

Als erstes wird dann die Textbox aktiviert mit der Anweisung SetFocus. Mit SelStart (Selection Start) wird dann die Position festgelegt an welcher Stelle des Textes mit der Auswahl begonnen werden soll. Und SelLength (Selection Length) legt die Länge bzw. Anzahl der Zeichen fest, die markiert werden soll. Diese wird über die Funktion Len ermittelt, welcher man den bereits in der Textbox enthalten Text übergibt.

An dem Code sieht man auch sehr schön, dass man die Länge des markiertem Text im Textfeld auch individuell variieren kann.

Natürlich gehört es zum guten Ton, dass ein solches Formular auch immer einen Okay-Button zur weiteren Verarbeitung der eingegebenen Daten hat sowie einen Schließen- oder Abbrechen-Button hat, um das Formular zu beenden.

Bestseller Nr. 1
Bestseller Nr. 2

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert