Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: String in Textfeld an Cursor einfügen

String in Textfeld an Cursor einfügen
27.04.2019 11:14:31
Sebastian
Hallo,
ich möchte gerne in einem UserForm in einem Textfeld an der Cursorposition einen String Per Button einfügen.
Ich habe schon ein bissel probiert aber eine richtige Lösung ist das nicht. Bei Umbrüchen im Textfeld funktioniert das nicht wirklich. Hat jemand einen Idee wie man das elegant und einfach lösen kann?
Vielen Dank für Hilfe
Mein Code bisher:
Private Sub CommandButton1_Click()
Pos = TextBox1.SelStart + TextBox1.SelLength
TextBox1 = Left(TextBox1, Pos) & "MeinName" & Mid(TextBox1, Pos)
End Sub

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
null Fehlerbeschreibung: "Funktioniert nicht!" owT
27.04.2019 11:44:47
EtoPHG

AW: null Fehlerbeschreibung: "Funktioniert nicht!" owT
27.04.2019 11:47:19
Sebastian
OK Sorry,
der Fehler ist, dass es dann irgendwo eingefügt wird und nicht an der gewünschten Stelle
VG Sebastian
Irgendwo, kann ich mir schlecht vorstellen...
27.04.2019 11:57:00
EtoPHG
Sebastian,
Bevor du Deine Befehle ausführst, kannst Du doch mal mit
Debug.Print TextBox1.SelStart, TextBox1.SelLength

Die beiden Werte im Direktfenstern des VBE ansehen und überprüfen.
Gruess Hansueli
Anzeige
AW: Irgendwo, kann ich mir schlecht vorstellen...
27.04.2019 12:18:49
Sebastian
Ich weiß jetzt nicht genau wie du das meinst - ich habe aber mal schnell ein Beispiel hochgeladen.
https://www.herber.de/bbs/user/129433.xlsm
Immer wenn ich im Textfeld den Namen einfügen will, da wo der Cursor steht, macht er z.B. einen Doppelpunkt oder ein Umbruch :-(
Anzeige
AW: Irgendwo, kann ich mir schlecht vorstellen...
27.04.2019 12:52:08
EtoPHG
Hallo Sebastian,
Dann ersetze mal deinen Code im CommandButton, durch diesen:
With TextBox1
Pos = .SelStart + .SelLength + _
(Len(Left(.Text, .SelStart)) - _
Len(Replace(Left(.Text, .SelStart), vbCrLf, vbNullString))) / 2
TextBox1 = Left(.Text, Pos - .SelLength) & "Thomas" & Mid(.Text, Pos + 1)
End With
Gruess Hansueli
Anzeige
AW: Irgendwo, kann ich mir schlecht vorstellen...
27.04.2019 12:38:57
Matthias
Moin!
Bei einer Textbox mit Multiline liefert .selpos einen falschen Wert. Es wird je Zeilenumbruch nur 1 Zeichen genommen anstatt 2. Das könntest du natürlich berechnen. Zählen wie oft ein Zeilenumbruch im Text bis zum .selpos vorkommt. Die Anzahl dann der position hinzufügen. Das aber nur bei multiline Textboxen. Das zumindest, wenn du bei deinem Code bleiben willst.
Da du aber den Namen an Stelle des selektierten Textes (entweder der Text oder die POsition) einfügst, sollte der COde hier auch das gewünschte machen.
Private Sub CommandButton1_Click()
Me.TextBox1.SelText = "MeinName"
End Sub
VG
Anzeige
AW: String in Textfeld an Cursor einfügen
27.04.2019 12:23:17
Sepp
Hallo Sebastian,
probiere es so.
Private Sub CommandButton1_Click()
  Dim objDataObject As MSForms.DataObject
    
  Set objDataObject = New MSForms.DataObject
  objDataObject.SetText "MeinName"
  objDataObject.PutInClipboard
  TextBox1.SetFocus
  Me.ActiveControl.Paste
  
  Set objDataObject = Nothing
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Anzeige
AW: String in Textfeld an Cursor einfügen
27.04.2019 12:30:10
Sebastian
Perfekt - das ist die Lösung :-) Vielen Dank
AW: String in Textfeld an Cursor einfügen
27.04.2019 12:41:05
Matthias
Moin!
Das bier wäre kürzer und ohne Datenobjekte.
Private Sub CommandButton1_Click()
Me.TextBox1.SelText = "MeinName"
End Sub
VG
Bravo... Matthias, kurz und bündig!
27.04.2019 13:50:21
EtoPHG
Man (ich) kann mir das Leben auch unnötig schwer machen ;-)
Gruess Hansueli
Anzeige
AW: String in Textfeld an Cursor einfügen
27.04.2019 13:56:59
Sebastian
Das ist die Beste und einfachste Lösung :-)
Auf die Idee muss man erstmal kommen - Danke, Vielen Dank
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

String in Textfeld an Cursor einfügen


Schritt-für-Schritt-Anleitung

Um in einem UserForm in Excel VBA einen String an der Cursorposition eines Textfelds einzufügen, kannst du die folgenden Schritte befolgen:

  1. Öffne das VBA-Editor-Fenster (Alt + F11).
  2. Füge ein UserForm hinzu und platziere ein Textfeld (TextBox1) sowie einen CommandButton (CommandButton1).
  3. Klicke mit der rechten Maustaste auf den CommandButton und wähle "Code anzeigen".
  4. Verwende den folgenden VBA-Code:
Private Sub CommandButton1_Click()
    Me.TextBox1.SelText = "MeinName"
End Sub
  1. Starte das UserForm und teste die Funktionalität, indem du den Cursor an eine gewünschte Position im Textfeld setzt und den Button klickst.

Häufige Fehler und Lösungen

Wenn du Probleme hast, dass der Text nicht an der gewünschten Stelle eingefügt wird, überprüfe folgendes:

  • Problem: Der Text wird an der falschen Stelle eingefügt.
    • Lösung: Stelle sicher, dass du die SelStart und SelLength korrekt verwendest, um die Cursorposition zu bestimmen. Hier ist ein alternativer Code:
Private Sub CommandButton1_Click()
    Dim Pos As Long
    With TextBox1
        Pos = .SelStart
        .Text = Left(.Text, Pos) & "MeinName" & Mid(.Text, Pos + .SelLength)
    End With
End Sub
  • Problem: Umbrüche im Textfeld verursachen unerwartetes Verhalten.
    • Lösung: Berücksichtige die Zeilenumbrüche, indem du die Zeichenlänge anpasst.

Alternative Methoden

Eine weitere Möglichkeit, den Text an der Cursorposition einzufügen, ist die Verwendung von Clipboard-Operationen. Hier ein Beispiel:

Private Sub CommandButton1_Click()
    Dim objDataObject As MSForms.DataObject
    Set objDataObject = New MSForms.DataObject
    objDataObject.SetText "MeinName"
    objDataObject.PutInClipboard
    TextBox1.SetFocus
    Me.ActiveControl.Paste
    Set objDataObject = Nothing
End Sub

Diese Methode kann nützlich sein, wenn du komplexere Texte oder Formatierungen einfügen möchtest.


Praktische Beispiele

Hier sind einige Beispiele zur Veranschaulichung der Funktionsweise:

  1. Einfaches Einfügen:

    • Der Benutzer klickt auf den Button, und der Name "Thomas" wird an der Cursorposition eingefügt.
  2. Multiline Textfeld:

    • Bei einem Textfeld mit mehreren Zeilen musst du sicherstellen, dass die Zeilenumbrüche korrekt behandelt werden. Verwende dazu den oben genannten Code mit der Anpassung für Zeilenumbrüche.

Tipps für Profis

  • Nutze Debug.Print, um die Werte von SelStart und SelLength zu überprüfen, falls du Probleme bei der Positionierung hast.
  • Experimentiere mit verschiedenen Textformatierungen und -längen, um das Verhalten bei der Eingabe zu testen.
  • Halte deinen Code so einfach wie möglich, um die Wartbarkeit zu erhöhen. Oft ist die kürzeste Lösung die effektivste.

FAQ: Häufige Fragen

1. Wie kann ich den Text an einer bestimmten Position einfügen, ohne die Standardauswahl zu überschreiben? Verwende SelText, um Text an der aktuellen Cursorposition einzufügen, ohne vorhandenen Text zu löschen.

2. Funktioniert dieser Code auch in älteren Excel-Versionen? Ja, der Code sollte auch in älteren Versionen von Excel (ab Excel 2007) funktional sein, solange VBA unterstützt wird. Achte darauf, dass alle erforderlichen Bibliotheken aktiviert sind.

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