Mehrere Wörter suchen
#1
Hallo zusammen!

Ich habe ein VBA-Programm geschrieben, um in Spalte A nach dem Wort "Hallo" in einer Tabelle zu suchen. Sobald das Wort in der Spalte gefunden wird, überträgt das Programm die Zeile in der Spalte nach rechts in eine neue Tabelle. Das funktioniert gut. Jetzt möchte ich nach mehreren Wörtern gleichzeitig suchen. Leider funktioniert das nicht ... Kann sich jemand den VBA-Code ansehen und mir sagen, was ich falsch gemacht habe? Vielen Dank im Voraus!


Der Code

Sub test()
T = "T1"
X = "A"
AX = 1

Z = "T4"
Y = 2
AY = "B"

Do Until Suche <> ""
Suche = ("hallo")

Loop
Set A = Worksheets(T)
Set B = Worksheets(Z)
Y = Y

With A.Columns(X)
Set Gefunden = .Find(Suche, LookIn:=xlValues)
If Not Gefunden Is Nothing Then
Erste = Gefunden.Address
Do 'für alle Fundstellen
B.Cells(Y, AY).Resize(1, AX) = Gefunden.Offset(0, 1).Resize(1, AX).Value
Y = Y + 1
Set Gefunden = .FindNext(Gefunden)
Loop Until Gefunden.Address = Erste
End If
End With
End Sub
Top
#2
Hallo,

bist du sicher, dass es da eine funktionierende Version gibt? Die unter deinem Betrag angezeigte markiert bei mir zwei Zeilen als fehlerhaft.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • fh_swf
Top
#3
Pardon, hatte leider die falsche Version eingefügt. Mein Fehler! Ist korrigiert :)
Top
#4
Hallo,

Du kannst bei Find nur einen Suchbegriff verwenden. Es gibt uA folgende Möglichkeiten:

1) Rufe die Suchfunktion mehrmals hintereinander mit den jeweiligen Begriffen auf
2) Kopiere die Daten in eine Array-Variable und gehe diese Zeile für Zeile durch und vergleiche den Inhalt mit den Suchbegriffen.
Gruß
Michael
Top
#5
Vielen Dank für deinen Kommentar. Das Problem ist, dass ich nach c.a 160 Wörtern suchen muss und die jeweiligen Spalten rechts daneben ausgeben soll. Natürlich lässt sich das durch eine mehrfache Wiederholung des Programms realisieren, jedoch ist es wünschenswert es so automatisiert wie möglich zu machen. Lässt sich die Array-Variable mit dem VBA Code verbinden?
Top
#6
Na ja, Dein Code-Schnipsel ist ja nicht sehr groß. Da kann man nicht viel davon verwenden. Für einen sinnvollen Lösungsvorschlag wären mehr Infos notwendig. Wie sieht die Tabelle aus? Welcher Bereich soll davon durchsucht werden? Wo stehen die (160) Suchbegriffe?

Eine Beispieldatei wäre hilfreich!
Gruß
Michael
Top
#7
Hallöchen,

im Prinzip so.
Deine Suchworte stehen z.B. in Tabelle2, Spalte A - sonst steht da nix. Das Makro reagiert flexibel auf die Anzahl der Einträge dort. Es sollten nur keine Leerzellen zwischendrin sein.
Deinen Suchcode musst Du dann in der Schleife einfügen, ich habe dort mal ein paar Zeilen drin, etwas abgewandelt.
Wenn Du einen treffer hast könntest Du die Schleife dann auch mit Exit For verlassen, damit Du nicht mehrere Kopien bei mehreren Treffern in einer Zeile erhältst.

Code:
Option Explicit

Sub test()
'Variablendeklarationen
'Variant
Dim arrSuch, gefunden
'Integer
Dim iCnt%
'Array einlesen
'Mit dem Blatt TABELLE2
With Sheets("Tabelle2")
  'Daten in Array uebertragen
  arrSuch = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row).Value
'Ende Mit dem Blatt TABELLE2
End With
'Schleife ueber alle Arrayeintraege
For iCnt = 1 To UBound(arrSuch)
  'Dein Code
  With Columns(1)
    Set gefunden = .Find(arrSuch(iCnt, 1), LookIn:=xlValues)
    If Not gefunden Is Nothing Then
    '...
    End If
  End With
'Ende Schleife ueber alle Arrayeintraege
Next
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste