Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Textbox mit Bindestrichen

Textbox mit Bindestrichen
abu
Hallo Zusammen,
hab da mal eine Frage. Arbeite mit einer Userform in der ich eine Textbox habe. Kann ich diese so aendern, dass wenn sich die Userform oeffnet da automatisch Bindestriche an bestimmten positionen stehen? Also 2 Stellen zum eingeben dann Bindestrich wieder 2 Stellen und wieder Bindestrich und dann 4 Stellen. Und dann soll das auch noch so sein, dass wenn ich die ersten 2 Stellen eingegeben habe dann automatisch nach dem Bindestrich weiterschreiben kann.
Kann man das mit einer Textbox umsetzen oder muss ich basteln mit 3 Boxen?
Gruss
abu
Anzeige
Das müsste man selbst programmieren
02.03.2010 14:13:40
NoNet
Hallo abu,
als Vorgabe gibt es das in Access-Datenbanken (in Formularen), jedoch nicht in Textboxen in Excel.
Man könnte das per Private Sub TextBox1_KeyPress (Ereignis der Textbox) selbst programmieren, ist aber etwas aufwändig.
Vielleicht macht sich ja ein anderer Helfer hier im Forum diese Mühe... ;-)
Gruß, NoNet
Anzeige
AW: Textbox mit Bindestrichen
02.03.2010 14:22:06
selli
hallo abu,
warum benutzt du nicht der einfachheit wegen 3 textboxen?
gruß selli
AW: Textbox mit Bindestrichen
02.03.2010 15:23:56
abu
Hallo Selli,
ja das ist Plan B wenn es keine andere Loesung gibt. Allerdings muessen die 3 Boxen ja dann auch wieder zusammengefuegt werden um sie in die Zelle zu schreiben und auseinandergebroeselt werden um sie wieder in die Boxen zu laden. Da das ja auch einen gewissen Aufwand darstellt, habe ich mir gedacht das es vllt. auch anders und schoener geht.
Kannst du mir vllt. ein Beipielcode nennen um sie zusammenzufuegen und wieder auseinanderzubroeseln?
Ausserdem kann ich einstellen wie viele Stellen eine Box haben darf aber wie stelle ich ein das er dann automatisch in die naechste Box springt ohne Tab zu benutzen?
Gruss
abu
Anzeige
AW: Textbox mit Bindestrichen
02.03.2010 16:06:28
Josef
Hallo abu,

was du suchst, nennt sich MaskedTextBox, das gibt's in VB aber nicht in VBA.
Hier eine Spielerei, je nach dem, welche Daten die eingegeben werden sollen, könnte man das noch ausbauen.
https://www.herber.de/bbs/user/68324.xls

Gruß Sepp

Anzeige
AW: Textbox mit Bindestrichen
02.03.2010 16:30:40
abu
Hallo Sepp,
die Beipieldatei sieht doch super aus (ausser die Unterstriche). Jetzt die frage was ist der Unterschied zwischen VB und VBA? Schrenkt mich das irgenwie ein oder kann ich das nicht in meine Userform einbauen? Wie bekomme ich die unterstriche weg?
Gruss
abu
AW: Textbox mit Bindestrichen
02.03.2010 17:07:07
Josef
Hallo abu,

VisualBasic(for)Applications ist ein Ableger von Visual Basic und stellt nicht alle Methoden/Eigenschaften und Steuerelemente zur Verfügung wie VB oder VB.net. VBA ist eben speziell für die Verwendung innerhalb von Anwendungen, wie eben Excel, konzipiert.
Ich hab das Beispiel ein wenig ausgebaut. Du kannst die Vorgabe im Code ändern, siehe die "Const"-Anweisungen. Man muss allerdings eine Monospace-Schriftart verwenden, sonst geht's in die Hose!
https://www.herber.de/bbs/user/68327.xls

Gruß Sepp

Anzeige
AW: Textbox mit Bindestrichen
03.03.2010 10:07:37
abu
Hallo Sepp,
vielen dank fuer deine Hilfe. Funktioniert 1a.
Gruss
abu
schoene Loesung Danke Sepp owT
02.03.2010 17:12:09
hary
.
finde ich auch, aber...
02.03.2010 17:16:29
ChristianM
... wenn man schnell hintereinander Zahlen eingibt, werden die Bindestriche überschrieben.
Die Idee ist trotzdem gut
Gruß
Christian
Anzeige
AW: @ Christian
02.03.2010 17:20:44
hary
Hallo Christian
sowas hatte ich auch mal.
Nimm dann das Keydown Ereigniss. Da kannste auch den Finger auf der Taste lassen.
gruss hary
jo, mit KeyDown ist's ok, Merci o.T
02.03.2010 17:25:08
ChristianM
AW: Textbox mit Bindestrichen
02.03.2010 16:19:40
selli
hallo abu,
zum zusammenfügen ganz einfach:
tb = UserForm1.TextBox1 & "-" & UserForm1.TextBox2 & "-" & UserForm1.TextBox3
auseinanderbröseln brauchst du doch nicht. du hast doch die einzelnen werte bzw. texte in der jeweiligen textbox schon vereinzelt.
die maximale länge kannst du bsp. mit der eigenschaft maxlength vorgeben:
UserForm1.TextBox1.MaxLength = 4
gruß selli
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Textbox mit Bindestrichen in Excel


Schritt-für-Schritt-Anleitung

Um in einer Textbox in Excel Bindestriche automatisch einzufügen, kannst Du den folgenden Code verwenden. Dieser Code sorgt dafür, dass beim Eingeben von Werten in die Textbox, die Bindestriche an den gewünschten Positionen erscheinen.

  1. Öffne den VBA-Editor in Excel (ALT + F11).
  2. Füge eine Userform hinzu (Rechtsklick auf „VBAProject“ > Einfügen > UserForm).
  3. Füge eine Textbox zur Userform hinzu (aus der Toolbox).
  4. Doppelklicke auf die Textbox, um den Code-Editor zu öffnen.
  5. Füge den folgenden Code ein:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Len(TextBox1.Text) = 2 Or Len(TextBox1.Text) = 5 Then
        TextBox1.Text = TextBox1.Text & "-"
        TextBox1.SetFocus
        SendKeys "{RIGHT}"
    End If
End Sub
  1. Passe die Positionen der Bindestriche nach Deinen Bedürfnissen an.

Dieser Code fügt nach 2 und 5 Zeichen einen Bindestrich ein. Du kannst dies leicht anpassen, um mehr oder weniger Bindestriche hinzuzufügen.


Häufige Fehler und Lösungen

  • Bindestriche werden überschrieben: Wenn Du schnell hintereinander Zahlen eingibst, kann es sein, dass die Bindestriche überschrieben werden. Eine Lösung hierfür ist die Verwendung des KeyDown-Ereignisses anstelle von KeyPress.
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    ' Hier kannst Du die Logik für das Einfügen der Bindestriche anpassen
End Sub
  • Textbox springt nicht automatisch zur nächsten: Um das automatische Springen zur nächsten Textbox zu ermöglichen, kannst Du das Exit-Ereignis nutzen, um den Fokus zu wechseln, wenn die maximale Länge erreicht ist.

Alternative Methoden

Falls Du Schwierigkeiten mit der Programmierung hast, kannst Du auch mehrere Textboxen verwenden, um die Eingabe zu strukturieren. Zum Beispiel:

  • TextBox1 für die ersten 2 Stellen
  • TextBox2 für die nächsten 2 Stellen
  • TextBox3 für die letzten 4 Stellen

Mit einem einfachen VBA-Skript kannst Du die Werte der Textboxen zusammensetzen:

Dim tb As String
tb = UserForm1.TextBox1 & "-" & UserForm1.TextBox2 & "-" & UserForm1.TextBox3

Somit erhältst Du die gewünschte Formatierung ohne viel Aufwand.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du die Textboxen kombinieren und die Werte an eine Excel-Zelle übergeben kannst:

Private Sub CommandButton1_Click()
    Dim tb As String
    tb = UserForm1.TextBox1 & "-" & UserForm1.TextBox2 & "-" & UserForm1.TextBox3
    Sheets("Tabelle1").Range("A1").Value = tb
End Sub

Das Beispiel zeigt, wie Du die kombinierten Werte mit Bindestrichen in die Zelle A1 einer Arbeitsblatt-Tabelle schreibst.


Tipps für Profis

  • Verwende Monospace-Schriftarten, um sicherzustellen, dass die Bindestriche und die eingegebenen Werte korrekt ausgerichtet sind.
  • Experimentiere mit den Const-Anweisungen, um die Eingabemasken nach Deinen Wünschen zu gestalten.
  • Achte darauf, die MaxLength-Eigenschaft der Textboxen einzustellen, um die Eingabe zu kontrollieren.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen VB und VBA?
Visual Basic (VB) ist eine eigenständige Programmiersprache, während Visual Basic for Applications (VBA) speziell für Anwendungen wie Excel entwickelt wurde. VBA hat nicht alle Funktionen von VB.

2. Kann ich statt Bindestrichen auch andere Trennzeichen verwenden?
Ja, Du kannst den Code anpassen, um stattdessen andere Trennzeichen wie Punkte oder Kommas einzufügen. Ändere einfach das Zeichen in der TextBox1_KeyPress-Methode.

3. Wie kann ich die Bindestriche entfernen?
Wenn Du die Bindestriche entfernen möchtest, kannst Du dies tun, indem Du die Textboxen vor dem Speichern der Werte bereinigst. Verwende dafür eine einfache String-Ersetzung:

Dim cleanedText As String
cleanedText = Replace(tb, "-", "")

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige