Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Textbox Zeilenweise auslesen

Forumthread: Textbox Zeilenweise auslesen

Textbox Zeilenweise auslesen
ChrisW
Hallo Leute,
Ich habe eine TextBox in einem Userform, in die vom User bis zu 20 Zeilen eingegeben werden dürfen.
Jede Zeile wird mit Enter manuell von der nächsten Zeile getrennt außer der Letzten Zeile
Wie kann ich diese Userform Textbox "MULTItextbox" mit maximal 20 Zeilen zeilenweise in die Variablen "MULTI(Zeile)" auslesen?
Hier ein Beispiel für den Inhalt der Textbox - hier mit 4 Zeilen:
A123
B234
C345
D456
und die Zuordnung:
MULTI(1) = A123
MULTI(2) = B234
MULTI(3) = C345
MULTI(4) = D456
Zweite Frage - wie kann ich die Textbox auf maximal 20 Zeilen begrenzen?
Vielen Dank für Eure Hilfe
Chris
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Textbox Zeilenweise auslesen
21.03.2011 12:01:11
Rudi
Hallo,
so?
Private Sub CommandButton1_Click()
Dim Multi
Multi = Split(TextBox1, vbCrLf)
If UBound(Multi) > 19 Then
MsgBox "Zu viele Zeilen!"
Else
MsgBox Join(Multi, vbLf)
End If
End Sub

AW: Textbox Zeilenweise auslesen
21.03.2011 13:00:53
ChrisW
Hallo Rudi,
VBA springt bei mir mit Fehlermessage "Expected Array"zu "Split".
Und wenn es funktionieren würde, wäre damit auch nur die zweite Frage beantwortet und noch nicht wie der String Zeilenweise ausgelesen wird und den Variablen zugeordnet wird.
Ich Stelle mir das irgendwie so vor:
Public MULTI(20) as String
ZZ = 0
Text = Me.MULTItextbox.value
For Zeile = LBound(Text) to UBound(Text)
ZZ = ZZ +1
MULTI(ZZ) = Text(Zeile)
Next Zeile
Aber es funktioniert leider nicht :c(
Danke für weitere Ideen
Chris
Anzeige
AW: Textbox Zeilenweise auslesen
21.03.2011 13:09:28
Rudi
Hallo,
1. ist der Code bei mir gelaufen, selbst bei leerer Textbox. Sonst hätte ich ihn nicht gepostet.
Heißt deine TB auch TextBox1 ?
2. Ist deine Frage vollständig beantwortet.
Multi = Split(TextBox1, vbCrLf)
macht aus dem Inhalt der TB ein Array, so wie du das willst.
Gruß
Rudi
Anzeige
AW: Textbox Zeilenweise auslesen
21.03.2011 13:54:13
ChrisW
Hallo Rudi,
Du hast ja recht,
Funktioniert in einem neuen Excel sheet einwandfrei, nur nicht wenn ich's in mein File einbinde.
Meine Textbox heißt MULTItextbox, aber das habe ich natürlich berücksichtigt.
Dann scheint er den Split befehl zu verweigern.
Ich suche jetzt in meinem File nach dem Problem.
Danke
Chris
Anzeige
VIELEN DANK AN RUDI !!!!
21.03.2011 14:17:35
ChrisW
Ich habe den Fehler gefunden.
In meiner Unwissenheit, das es eine "Split" Funktion gibt, habe ich vor Monaten schon in meinem PublicVariablen Modul "Split" als als Double definiert, aber diese Variable habe ich nie verwendet (sonst hätte ich wohl vorher schon Fehlermeldungen bekommen).
Nachdem ich die Split als Variable nun gelöscht habe funktioniert nun alles wie es soll.
VIELEN DANK AN RUDI !!!!
Chris
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zeilenweise Daten aus einer TextBox in Excel VBA auslesen


Schritt-für-Schritt-Anleitung

Um Daten aus einer TextBox in einem UserForm zeilenweise auszulesen, kannst Du folgende Schritte befolgen:

  1. UserForm erstellen: Füge eine TextBox (z.B. MULTItextbox) und einen CommandButton (z.B. CommandButton1) in Deine UserForm ein.

  2. VBA-Code einfügen: Öffne den VBA-Editor (Alt + F11) und füge den folgenden Code in das Codefenster der UserForm ein:

    Private Sub CommandButton1_Click()
       Dim Multi() As String
       Dim Zeile As Integer
       Dim ZZ As Integer
    
       Multi = Split(MULTItextbox.Value, vbCrLf)
    
       If UBound(Multi) > 19 Then
           MsgBox "Zu viele Zeilen!"
           Exit Sub
       End If
    
       For Zeile = LBound(Multi) To UBound(Multi)
           ZZ = Zeile + 1
           Debug.Print "MULTI(" & ZZ & ") = " & Multi(Zeile)
           ' Hier kannst Du die Variable MULTI(ZZ) verwenden
       Next Zeile
    End Sub
  3. Limitierung auf 20 Zeilen: Der Code überprüft, ob mehr als 20 Zeilen eingegeben wurden. In diesem Fall wird eine entsprechende Fehlermeldung angezeigt.


Häufige Fehler und Lösungen

  • Fehler: "Expected Array" bei Split

    • Lösung: Stelle sicher, dass Du keine Variable mit dem Namen Split definiert hast. Diese könnte die eingebaute Split-Funktion überschreiben. Lösche die Variable, um den Fehler zu beheben.
  • TextBox nicht gefunden

    • Lösung: Überprüfe den Namen der TextBox. Im Code ist MULTItextbox verwendet. Wenn Deine TextBox anders benannt ist, passe den Namen im Code entsprechend an.

Alternative Methoden

Falls Du eine andere Methode bevorzugst, kannst Du auch die String-Funktionen von VBA verwenden, um die Zeilen zu trennen, anstatt die Split-Funktion. Eine manuelle Methode könnte so aussehen:

Dim Text As String
Dim Zeilen As Integer
Dim StartPos As Integer
Dim EndPos As Integer

Text = MULTItextbox.Value
StartPos = 1
Zeilen = 0

Do While StartPos <= Len(Text)
    EndPos = InStr(StartPos, Text, vbCrLf)
    If EndPos = 0 Then EndPos = Len(Text) + 1

    Zeilen = Zeilen + 1
    If Zeilen > 20 Then
        MsgBox "Zu viele Zeilen!"
        Exit Sub
    End If

    MULTI(Zeilen) = Mid(Text, StartPos, EndPos - StartPos)
    StartPos = EndPos + 2
Loop

Praktische Beispiele

Hier ist ein Beispiel, wie Du die Zeilen in ein Array lesen kannst:

  1. Gib in die MULTItextbox folgende Zeilen ein:

    A123
    B234
    C345
    D456
  2. Klicke auf den Button. Der Debugger gibt folgendes aus:

    MULTI(1) = A123
    MULTI(2) = B234
    MULTI(3) = C345
    MULTI(4) = D456

Tipps für Profis

  • Debugging: Nutze Debug.Print, um den Inhalt der Variablen während der Ausführung zu überprüfen. Das hilft Dir, Fehler schnell zu finden.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung mit On Error Resume Next, um unerwartete Fehler abzufangen und zu verarbeiten.
  • Benutzerführung: Überlege, Hinweise oder Platzhaltertext in der TextBox anzuzeigen, um den Benutzern klarzumachen, wie viele Zeilen sie eingeben können.

FAQ: Häufige Fragen

1. Wie kann ich die maximale Anzahl der Zeilen direkt in der TextBox begrenzen?
Du kannst die KeyPress-Ereignisprozedur verwenden, um die Eingabe zu überwachen und zu verhindern, dass mehr als 20 Zeilen eingegeben werden.

2. Wie kann ich den Inhalt der TextBox in eine Excel-Tabelle übertragen?
Du kannst den Code im CommandButton erweitern, um die Werte des Arrays in die Zellen einer Tabelle zu schreiben, z.B. Cells(1, 1).Value = Multi(0) für die erste Zeile.

3. Funktioniert das auch in Excel 2016?
Ja, der Code ist mit Excel-Versionen ab 2010 kompatibel. Stelle sicher, dass Du die richtigen Objekte in Deinem UserForm verwendest.

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