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

Forumthread: VBA Text trennen

VBA Text trennen
31.01.2018 12:09:39
Simon
Hallo,
Ich habe folgendes VBA Problem:
In meiner Excel Liste gibt es ein kleines Eingabeformular.
In diesem Formular wird per Knopfdruck ein Text nach jedem ; getrennt und untereinander ausgegeben.
dies sieht folgendermaßen aus:
Vorher:
Test1; Test2; Test3
Nachher:
Test1
Test2
Test3
----------------------
Nun zu meinem Problem:
Manchmal kommt es vor das vier Wörter hintereinander stehen
(Test1; Test2; Test3; Test4)
Jedoch soll Test4 nicht ausgegeben werden.
Nun benötige ich 2 kleine Makros. Diese sollen wenn der Button betätigt wird Test4 kurz rauslöschen und anschließend Test4 wieder einfügen.
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.
Wenn nicht einfach nachfragen :)
Hier noch ein kleines Beispiel wie es mit eurem Makro aussehen soll:
Test1; Test2; Test3; Test4;
*Button wird betätigt*
Call Makro1 wird ausgeführt
Test1; Test2; Test3
Call Makro2 wird ausgeführt
Test1
Test2
Test3
Call Makro3 wird ausgeführt
Test1; Test2; Test3; Test4
Gruß Simon
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Text trennen
31.01.2018 12:32:21
Herbert
Hallo Simon,
sind das immer nur maximal 4 Wörter?
Servus
AW: VBA Text trennen
31.01.2018 12:38:28
yummi
Hallo Simon,
du musst nicht umständlich löschen und hinzufügen
zum Beispiel:
dein Text in Zelle A1, ausgabe in B1 bis B3

Sub test
dim z() as String
dim i as integer
z = split(ActiveSheet.Cells(1,1).value, ";")  'spaltet dein Wert in A1 nach ; auf
For i = 0 To UBound(z)     'durchläuft das so entstandene Array
if i 
Gruß
yummi
Anzeige
AW: VBA Text trennen
31.01.2018 12:44:48
Herbert
Hallo Simon,
und so geht es auch untereinander:
Sub test()
Dim z() As String
Dim i As Integer
z = Split(ActiveSheet.Cells(1, 1).Value, "; ") 'spaltet dein Wert in A1 nach ; auf
For i = 0 To UBound(z)     'durchläuft das so entstandene Array
If i 
Durch das Blank hinter dem "; " wird das Ganze auch ohne führendes Blank getrennt.
Servus
Anzeige
und ohne Schleife so
31.01.2018 13:04:20
Rudi
Hallo,
Sub test()
Dim z() As String
z = Split(ActiveSheet.Cells(1, 1).Value, "; ") 'spaltet dein Wert in A1 nach ; auf
Cells(2, 1).Resize(3) = WorksheetFunction.Transpose(z)
End Sub

Gruß
Rudi
AW: und ohne Schleife so
31.01.2018 14:49:30
Simon
Danke für die schnellen Antworten :)
Ich habe nun den VBA Code gefunden der mir in meiner Excel alles kaputt macht und auch TEST4 ausgeben würde. Der Code wurde mir hier im Forum gemacht nur leider bringt mir dieser nun nichts mehr.
Dieser sieht folgendermaßen aus:
Sub Zellinhalte_trennen1()
'** Trennen von Zellinhalten an einem vorgegebenen Trennzeichen
'** Dimensionierung der Variablen
Dim lngZ As Long
Dim strTeilstring()   As String
Dim strTrennzeichen As String
'** Vorgaben definieren
Set wsakt = ThisWorkbook.Sheets("Aushang_erstellen")
lngZ = 41 'Ab dieser Zeile wird der getrennte Text ausgegeben;
strTrennzeichen = ";" 'Trennzeichen festlegen z.B. Komma(,) Semikollon(;) Bindestrich(-) etc.
'** Durchlaufen aller Datenzeilen
For x = 35 To 35 'Diese Zeilen werden überprüft;
'** Teilstring am Delimiter auslesen
strTeilstring = Split(Trim(wsakt.Cells(x, 3).Value), strTrennzeichen)
'** Durchlaufen des gesamten Arrays einer Zelle vom ersten bis zum letzten Wert
For A = LBound(strTeilstring) To UBound(strTeilstring)
'** Array-Elemente nacheinander eintragen
wsakt.Cells(lngZ, 3).Value = Trim(strTeilstring(A))
'** Zeilenzähler erhöhen
lngZ = lngZ + 1 '+ = Text wird nach unten ausgegeben | - = Text wird nach oben ausgegeben;
Next A
Next x
End Sub
Denkt ihr könnte man diesen Code umschreiben das dieser genau das macht was ich oben geschrieben habe?
Anzeige
AW: und ohne Schleife so
01.02.2018 14:23:08
Simon
Benötige keine Hilfe mehr hab das Problem alleine gelöst mit euren kleine VBA-Skripts :)
Danke!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Text trennen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und gehe zu dem Arbeitsblatt, in dem du den Text trennen möchtest.

  2. Öffne den Visual Basic for Applications (VBA) Editor mit Alt + F11.

  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject" > Einfügen > Modul.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub TextTrennen()
       Dim z() As String
       Dim i As Integer
       z = Split(ActiveSheet.Cells(1, 1).Value, ";") ' Splittet den Text in Zelle A1 bei jedem Semikolon
       For i = LBound(z) To UBound(z)
           Cells(i + 2, 1).Value = Trim(z(i)) ' Gibt die Teile untereinander in Spalte A aus
       Next i
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Führe das Makro aus: Gehe zu „Entwicklertools“ > „Makros“ > wähle „TextTrennen“ und klicke auf „Ausführen“.

Jetzt solltest du den Text erfolgreich in separate Zeilen aufgeteilt haben.


Häufige Fehler und Lösungen

  • Fehler: „Typenunverträglichkeit“
    Lösung: Stelle sicher, dass die Zelle, die du trennen möchtest, tatsächlich Text enthält und nicht leer ist.

  • Fehler: Kein Text wird ausgegeben.
    Lösung: Überprüfe, ob die Zelle A1 den erwarteten Text mit dem Trennzeichen ; enthält.

  • Fehler: Der Text wird nicht korrekt getrennt.
    Lösung: Achte darauf, das richtige Trennzeichen in der Split-Funktion zu verwenden, z.B. "; " für einen Leerraum nach dem Semikolon.


Alternative Methoden

  • Text in Spalten: Du kannst auch die Funktion „Text in Spalten“ verwenden, um Text zu trennen. Markiere die Zelle, gehe zu „Daten“ > „Text in Spalten“ und wähle „Getrennt“ aus. Setze das Trennzeichen auf Semikolon.

  • Formel verwenden: Wenn du keine Makros verwenden möchtest, kannst du mit Formeln arbeiten. Zum Beispiel:

    =INDEX(SPLIT(A1, ";"), ROW(A1))

Praktische Beispiele

  1. Beispiel 1: Du hast in Zelle A1 den Text „Apfel; Banane; Orange“ und möchtest diesen in Zellen A2 bis A4 aufteilen.

    Führe das Makro aus und du erhältst:

    • A2: Apfel
    • A3: Banane
    • A4: Orange
  2. Beispiel 2: Wenn der Text „Auto; Bus; Fahrrad; Zug“ in A1 steht und du nur die ersten drei Wörter ausgeben möchtest, kannst du das Makro so anpassen, dass es nur bis UBound(z) - 1 iteriert.


Tipps für Profis

  • VBA String Zerlegen: Du kannst die Split-Funktion auch mit mehreren Trennzeichen verwenden, indem du eine Schleife über ein Array von Trennzeichen läufst.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen in deinem VBA-Code, um unerwartete Fehler zu vermeiden.

  • Optimierung: Wenn du mehrere große Datenmengen bearbeitest, kann es sinnvoll sein, die Berechnung auszuschalten und nach dem Verarbeiten wieder zu aktivieren, um die Leistung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Trennzeichen verwenden?
Du kannst die Split-Funktion in einer Schleife für jedes Trennzeichen aufrufen oder ein benutzerdefiniertes Funktion schreiben, das mehrere Trennzeichen unterstützt.

2. Was passiert, wenn es keine Trennzeichen gibt?
In diesem Fall wird der gesamte Inhalt der Zelle als ein einziges Element im Array ausgegeben. Du musst dann entscheiden, wie du damit umgehen möchtest.

3. Kann ich Text auch nach einem Wort trennen?
Ja, du kannst die Split-Funktion auch verwenden, um den Text nach bestimmten Wörtern zu trennen, indem du das Wort als Trennzeichen angibst.

4. Wie kann ich den Code anpassen, wenn ich mehr oder weniger als 4 Wörter habe?
Du musst die Schleife im VBA-Code anpassen, um die Anzahl der Wörter zu berücksichtigen, die du tatsächlich trennen möchtest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige