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

Textteile mit VBA herauskopieren

Forumthread: Textteile mit VBA herauskopieren

Textteile mit VBA herauskopieren
15.09.2004 18:10:25
barbara
Hallo, Ihr Superschlauen,
und das meine ich mit vollster Hochachtung, denn die schwierigsten Probleme werden hier schnell und einfach gelöst.
Ich bin ganz hin und her gerissen.
Mein Problem:
Ich möchte den Inhalt einer Zelle zerlegen und in ander Zellen schreiben.
Schwierigkeiten habe ich beim Zerlegen.
In den einzelnen Zellen steht zB:
Platz4 Sabine (19 Jahre)
Platz10 Karl (18 Jahre)
Platz33 Ute (17 Jahre)
Das Muster ist immer das gleiche.
Und da will ich Sabine als eigenen textstring haben, und 19 Jahre, Karl, 18 Jahre, Ute, 17 Jahre auch.
Mit Excel kann ich das, aber in VBA fehlen mir die Funktionen. Mit inStr finde ich zwar die Position eies Zeichens, aber den Text zwischen Leerzeichen und ( kriege ich nicht raus.
Wenn ich den text dann als Variable habe, komme ich schon weiter.
Hat wer der geschätzten Spezialsten einen Rat?
LG, B.
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textteile mit VBA herauskopieren
th.heinrich
hallo Barbara,
mit mir bist Du allerdings auf keinen profi gestossen, deswegen habe ich den thread auch wieder auf offen gestellt.
mal angedacht DATEN-TEXT IN SPALTEN mit GETRENNT-LEERZEICHEN-ANDERE-( bekommst Du zumindest die erste KLAMMER weg. die zweite ) mit ERSETZEN-)-ALLE ERSETZEN.
klar ist das umstaendlich und ich bin mir auch sicher, dass noch VBA loesungen eintrudeln.
gruss thomas
Anzeige
AW: Textteile mit VBA herauskopieren
PeterW
Hallo Barbara,
in VBA geht das im Prinzip wie in Excel auch. Mal ein Beispiel für den ersten Teil, der Rest ist dann nur noch Fleissarbeit. ;-)

Sub Textteile()
Dim strAusgang As String
Dim strPlatz As String
strAusgang = "Platz4 Sabine (19 Jahre)"
strPlatz = Left(strAusgang, InStr(1, strAusgang, " "))
MsgBox strPlatz
strAusgang = Right(strAusgang, Len(strAusgang) - InStr(1, strAusgang, " "))
MsgBox strAusgang
End Sub

Gruß
Peter
Anzeige
AW: Textteile mit VBA herauskopieren
15.09.2004 18:55:15
Nepumuk
Hallo barbara,
kurz und knapp:


Public Sub barbara()
    Dim strName As String, strAlter As String
    strName = Mid(Cells(3, 1), InStr(1, Cells(3, 1), " ") + 1, InStr(InStr(1, Cells(3, 1), " ") + 1, Cells(3, 1), " ") - InStr(1, Cells(3, 1), " ") - 1)
    strAlter = Mid(Cells(3, 1), InStr(1, Cells(3, 1), "(") + 1, InStr(InStr(1, Cells(3, 1), "(") + 1, Cells(3, 1), ")") - InStr(1, Cells(3, 1), "(") - 1)
End Sub


Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Textteile mit VBA herauskopieren


Schritt-für-Schritt-Anleitung

Um Textteile aus einer Zelle mit VBA herauszukopieren, kannst Du den folgenden Schritten folgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf VBAProject (DeinWorkbookName) und wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub Textteile()
    Dim strAusgang As String
    Dim strPlatz As String
    Dim strName As String
    Dim strAlter As String

    strAusgang = "Platz4 Sabine (19 Jahre)"

    ' Extrahiere den Platz
    strPlatz = Left(strAusgang, InStr(1, strAusgang, " ") - 1)

    ' Extrahiere den Namen
    strName = Mid(strAusgang, InStr(1, strAusgang, " ") + 1, InStr(InStr(1, strAusgang, " ") + 1, strAusgang, "(") - InStr(1, strAusgang, " ") - 2)

    ' Extrahiere das Alter
    strAlter = Mid(strAusgang, InStr(1, strAusgang, "(") + 1, InStr(1, strAusgang, ")") - InStr(1, strAusgang, "(") - 1)

    MsgBox "Platz: " & strPlatz & vbCrLf & "Name: " & strName & vbCrLf & "Alter: " & strAlter
End Sub
  1. Führe das Makro aus: Drücke F5, um das Makro auszuführen und die Ergebnisse in einer MessageBox anzuzeigen.

Mit diesem Code kannst Du die Teile des Textes in separate Variablen speichern und sie nach Bedarf weiterverwenden.


Häufige Fehler und Lösungen

  • Fehler: "Index außerhalb des Bereichs"
    Lösung: Stelle sicher, dass die Zelle, die Du analysierst, tatsächlich den erwarteten Text enthält. Überprüfe die Zellreferenzen im Code.

  • Problem mit Leerzeichen
    Wenn der Text Leerzeichen enthält, kann es sein, dass die Extraktion nicht wie gewünscht funktioniert. Achte darauf, dass Du die Positionen der Leerzeichen exakt angibst.


Alternative Methoden

Eine einfache Möglichkeit, Textteile zu extrahieren, ist die Verwendung von Excel-Formeln anstelle von VBA. Du kannst die Funktion TEXTTEIL in Kombination mit FINDEN verwenden, um ähnliche Ergebnisse zu erzielen.

Beispiel:

=TEXTTEIL(A1; FINDEN(" "; A1) + 1; FINDEN("("; A1) - FINDEN(" "; A1) - 2)

Diese Formel gibt den Namen zurück, wenn der vollständige Text in Zelle A1 steht.


Praktische Beispiele

Wenn Du mehrere Einträge hast, kannst Du eine Schleife in VBA verwenden, um alle Zellen in einer Spalte zu verarbeiten:

Sub AlleTextteile()
    Dim i As Integer
    Dim strAusgang As String

    For i = 1 To 10 ' Angenommen, Du hast 10 Einträge
        strAusgang = Cells(i, 1).Value
        ' Hier kannst Du die Extraktionslogik implementieren
    Next i
End Sub

Tipps für Profis

  • Verwende Option Explicit: Setze am Anfang Deines Moduls Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Situationen zu handhaben und Dein Makro robuster zu gestalten.

FAQ: Häufige Fragen

1. Kann ich diesen Code in Excel 365 verwenden?
Ja, der Code funktioniert in Excel 365 sowie in früheren Versionen von Excel.

2. Wie kann ich mehrere Zellen gleichzeitig verarbeiten?
Du kannst eine Schleife verwenden, um durch alle relevanten Zellen zu iterieren, wie im Abschnitt "Praktische Beispiele" beschrieben.

3. Gibt es eine einfachere Methode ohne VBA?
Ja, Du kannst Excel-Formeln verwenden, um Textteile direkt in den Zellen zu extrahieren, allerdings ist dies weniger flexibel als VBA.

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