Gedankenfehler in Tabellendurchsuche

Ich habe hier ein Deckfehler ich komm einfach nicht darauf wo der Fehler ist. Hier erstmal der Code.

Ich rufe bei Veränderung eines Textfeldes das sub mit

Call Kundensuche(T_Nachname.Text, „A“, 1)

Auf

Sub Kundensuche(Wortteil, SpalteB, SpalteZ)
Dim Z As Range
Dim aKunden(1000, 2)

fKZeile = 0
LB_Kundenliste.Clear
If Not Wortteil = „“ Then
For Each Z In Worksheets(„Kundendaten“).Range(„A1:A“ & KAnzahl)
If Z Like „*“ & Wortteil & „*“ Then
For Kundenzeile = 1 To Worksheets(„Kundendaten“).[A1048576].End(xlUp).Row
If Worksheets(„Kundendaten“).Cells(Kundenzeile, 1) = Z Then
aKunden(fKZeile, 0) = Worksheets(„Kundendaten“).Cells(Kundenzeile, 1) & ", " & Worksheets(„Kundendaten“).Cells(Kundenzeile, 2)
aKunden(fKZeile, 1) = Worksheets(„Kundendaten“).Cells(Kundenzeile, 3) & ", " & Worksheets(„Kundendaten“).Cells(Kundenzeile, 4)
aKunden(fKZeile, 2) = Worksheets(„Kundendaten“).Cells(Kundenzeile, 5) & ", " & Worksheets(„Kundendaten“).Cells(Kundenzeile, 6)
fKZeile = fKZeile + 1
End If
Next Kundenzeile
End If
Next Z
Else
Call ListboxFüllen
End If

LB_Kundenliste.List() = aKunden

End Sub

Ich habe eine Tabelle die durchsucht wird. Dort findet man in der 1 Spalte die Werte

Wilken
Weis
Weis
Weis

Und in der zweiten Spalte die dazu Passenden Vornamen

Andrea
Sandra
Fransika
Marion

In der Listbox steht danach folgendes

Wilken Andrea
Weis Sandra
Weis Fransika
Weis Marion
Weis Sandra
Weis Fransika
Weis Marion

Er schreibt die Leute die den gleichen Vornamen haben zwei mal 
Wo ist da mein Denkfehler?

Hallo Le,

ich komm einfach nicht darauf wo der Fehler ist.

mir,uns machste es aber auch nicht einfach :frowning: Du benutzt globale Variablen wie z.B. KAnzahl, woher soll ich denn wissen welchen Wert die hat wenn du da nen Fehler kriegst.

Dein Prozedurkopf sieht so aus:
Sub Kundensuche(Wortteil, SpalteB, SpalteZ)
SpalteB und SpalteZ werden im Code aber nicht benutzt.

Alles in allem sind das alles Irritationen die das helfen erschweren. Mir fällt auf alle doppelten werden nacheinander unten in der LB angehängt, also Weis Sandra steht nicht doppelt direkt untereinander sondern erst weiter unten doppelt, das ist schonmal ein Einstiegspunkt zur Fehlersuche.

Mach mal eines, mach die Prozedur alleine lauffähig.
Also so in etwa:

Sub Kundensuche()
Dim …
Wortteil=
KAnzahl=
usw.

Findest du dann nicht den Fehler so lade eine Beispielmappe hoch mit den daten die du gezeigt hast und der eben beschriebenen Prozedur. Dann hat der Fehler ausgespielt.

Gruß
Reinhard

Erstmal danke Reinhard das du so schnell drauf geschaut hast.
Tut mir leid das ich nicht alles angegeben hatte, obwohl ich extra geschaut hatte… man ist vielleicht etwas Blind für so etwas.

Habe jetzt mal eine kleine Mappe zusammengeschustert und versucht alle Globalen Variablen und übergaben zu vermeiden. Jetzt schreibt er den Wert sogar 3 mal hin… vermutlich weil es drei Personen mit dem nachnamen gibt… 
Wundert mich nur das er bei der richtigen Excel Mappe nur zwei mal macht…

Nunja egal. Ich hoffe ihr kommt damit klar und könnt mir helfen…

http://www.file-upload.net/download-9143808/Kundenli…schon mal vielen dank

Ich hab in der Mappe glaub ich noch ein Array deklariert, das kann man missachten

Nunja egal. Ich hoffe ihr kommt damit klar und könnt mir
helfen…

http://www.file-upload.net/download-9143808/Kundenli…

Hallo Le,

nachfolgend Code der funktioniert. Ist die Namensliste in „A“ immer sortiert von A-Z?

Gruß
Reinhard

Private Sub UserForm\_Initialize()
Dim Z As Range, colC As New Collection, C As Long
Dim fKzeile As Integer
Wortteil = "W"
SpalteB = "A"
SpalteZ = 1
KAnzahl = "4"
fKzeile = "0"
LB\_Kundenliste.Clear
If Not Wortteil = "" Then
 On Error Resume Next ' wg. collection
 For Each Z In Worksheets("Kundendaten").Range(SpalteB & "1:" & SpalteB & KAnzahl)
 colC.Add Item:=CStr(Z), Key:=CStr(Z)
 Next Z
 On Error GoTo 0
 For C = 1 To colC.Count
 If colC(C) Like "\*" & Wortteil & "\*" Then
 For Kundenzeile = 1 To Worksheets("Kundendaten").Cells(Rows.Count, "A").End(xlUp).Row
 If Worksheets("Kundendaten").Cells(Kundenzeile, SpalteZ) = colC(C) Then
 LB\_Kundenliste.AddItem
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 0) = Worksheets("Kundendaten").Cells(Kundenzeile, 1) & ", " & Worksheets("Kundendaten").Cells(Kundenzeile, 2)
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 1) = Worksheets("Kundendaten").Cells(Kundenzeile, 3) & " " & Worksheets("Kundendaten").Cells(Kundenzeile, 4)
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 2) = Worksheets("Kundendaten").Cells(Kundenzeile, 5) & " " & Worksheets("Kundendaten").Cells(Kundenzeile, 6)
 fKzeile = fKzeile + 1
 End If
 Next Kundenzeile
 End If
 Next C
End If
End Sub

Wow erstmal danke danke, bin gerade tief in etwas anderes verstrickt… Werde es nachher mal testen und mich wiedermelden

Ja die Tabelle ist immer nach Spalte A Sortiert.
Ist das wichtig? Den ich wollte nicht nur so wie jetzt nach Nachnamen sondern auch nach Vornamen sortieren. Oder muss ich davor halt einfach die betreffende Spalte sortieren?

Hallo Le,

Ja die Tabelle ist immer nach Spalte A Sortiert.
Ist das wichtig?

jain, als ich das fragte hatte ich andere Gedanken. Da war ich noch von deinem Code und den zwei For-Schleifen irritiert. Ist aber hinfällig, du brauchst nur eine For-Schleife:

Private Sub UserForm\_Initialize()
Dim Z As Range
Dim fKzeile As Integer
Wortteil = "W"
SpalteB = "A"
SpalteZ = 1
KAnzahl = "4"
fKzeile = "0"
LB\_Kundenliste.Clear
If Not Wortteil = "" Then
 With Worksheets("Kundendaten")
 For Each Z In .Range(SpalteB & "1:" & SpalteB & KAnzahl)
 If Z Like "\*" & Wortteil & "\*" Then
 LB\_Kundenliste.AddItem
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 0) = .Cells(Z.Row, 1) & ", " & .Cells(Z.Row, 2)
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 1) = .Cells(Z.Row, 3) & " " & .Cells(Z.Row, 4)
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 2) = .Cells(Z.Row, 5) & " " & .Cells(Z.Row, 6)
 fKzeile = fKzeile + 1
 End If
 Next Z
 End With
End If
End Sub

Den ich wollte nicht nur so wie jetzt nach
Nachnamen sondern auch nach Vornamen sortieren. Oder muss ich
davor halt einfach die betreffende Spalte sortieren?

K.A., wird sich ergeben beim Codieren, muß jetzt weg, bis später, teste du erstma den Code. Wenn der „sitzt“ kommen die Vornamen dran o.ä.

Gruß
Reinhard

Supi das klappt für die Vornahmen echt super.
Danke Danke

Habe ihn jetzt auch etwas angepasst

fKzeile = „0“
LB_Kundenliste.Clear
If Not T_Suchbegriff.Text = „“ Then
With Worksheets(„Kundendaten“)
For Each Z In .Range(„A1:G17“)
If Z Like „*“ & T_Suchbegriff.Text & „*“ Then
LB_Kundenliste.AddItem
LB_Kundenliste.List(LB_Kundenliste.ListCount - 1, 0) = .Cells(Z.Row, 1) & ", " & .Cells(Z.Row, 2)
LB_Kundenliste.List(LB_Kundenliste.ListCount - 1, 1) = .Cells(Z.Row, 3) & " " & .Cells(Z.Row, 4)
LB_Kundenliste.List(LB_Kundenliste.ListCount - 1, 2) = .Cells(Z.Row, 5) & " " & .Cells(Z.Row, 6)
fKzeile = fKzeile + 1
End If
Next Z
End With

Dachte ich könnte jetzt einfach bei
For Each Z In .Range(„A1:G17“)
den Bereich erweitern und würde dort dann auch suchen können. Leider kommen dann wieder doppelte Einträge. Aber nur wenn ich bei den Spalten ab B Suche.
Seh ich das richtig, das ich den kompletten Code in eine Vorschleife von A-G packen muss und in der oberen Zeile dann im Range die Buchstaben von A-G haben muss?

Gruß

Datenliste in Listbox reinfiltern per Vba
Hallo Le,

Supi das klappt für die Vornahmen echt super.
Danke Danke

ui, der Dank für mich? *freu* Schad daß ich mich um die Vornamen bislang noch nicht kümmerte :frowning: :smile:)

Dachte ich könnte jetzt einfach bei
For Each Z In .Range(„A1:G17“)
den Bereich erweitern und würde dort dann auch suchen können.
Leider kommen dann wieder doppelte Einträge. Aber nur wenn ich
bei den Spalten ab B Suche.

Ich glaube wir müßten wieder zu den Anfängen zurück, bin vllt. zu schnell :frowning: Da kommen nicht einfach so doppelte Einträge, du codierst so.
Ist dir inzwischen klar geworden warum diese doppelten/mehrfachen Einträge kamen in deiner Anfangsfrage bzw. in der Beispielmappe die du hochgeladen hast?
Das ist wichtig für dich. Sonst scheiterst du auch an Vornamen oder wie hier wo du einfach mal so den Suchbereich erweitern willst.

Also, weißt du warum deine Anfangscodes scheiterten?

Seh ich das richtig, das ich den kompletten Code in eine
Vorschleife von A-G packen muss und in der oberen Zeile dann
im Range die Buchstaben von A-G haben muss?

Sorry, dem kann ich nicht folgen. Aber können wir ja noch klären, nachdem du die Gründe für „doppelte“ durch deine Codes inhaliert/verinnerlicht hast *gg*

Und für weitere Kommunikation, nicht nur mit mir, grundsätzlich in allen Foren, bitte formatiere deine Codes die du zeigst sodaß Einrückungen bestehen bleiben. Kann in Foren unterschiedlich sein, hier dient dazu der pre-Tag.
Der wird erläutert wenn du das Eingabefald hier siehst und da auf „Hilfe zu den Tags“ o.ä. klickst.

Im VB-Editor kannste unter „Extras“ „Variablendeklaration erforderlich“ anhaken, ich leg dir ans Herz: mache das. Dann hast du in jedem Modul automatisch oben „Option Explicit“ und jeder gute Vbaler hat das da stehen.

Deine Beispielmappe haste gut gemacht, also auch mit der Codeumstruktierung. Ein Manko ist da aber noch, leicht behebbar, bitte mehr Datenzeilen. Grad zum Testen braucht man wenn man in „A“ nach Wortteil „W“ fahndet, natürlich auch Dateneinträge die kein „W“ enthalten…

Und, was willste eigentlich letztendlich? In deiner Beispielmappe sehe ich ja die Blattstruktur. In die Listbox sollen nur die Daten die in „A“ den Wortteil „W“ enthalten. Okay, sehe ich für mich als grundsätzlich gelöst an. Was noch, was hat es mit „Vornamen“ auf sich? Sollen da in die Listbox nur Daten die im Namen ein „W“ enthalten und dann im Vornamen ein „X“ enthalten?

Eine Bitte noch, antworte mir bitte im Forum. D.h. klick meinen Beitrag an auf den du antworten willst und antworte da, dann bekomme ich Email-Info daß du geantwortet hast. So wie du es praktizierst krieg ich die nicht.

Gruß
Reinhard

Danke für deine Kritik hilft mir sehr weiter. Ich versuche morgen mal um zu setzen was du mir empfiehlst.
Ich merke leider immer wieder, das ich teilweise Grundlegendes nicht oder nur mangelhaft behersche. Habe mir das Excel Makro „programmieren“ versucht selber bei zu bringen. Durch viel Lesen in den Foren und tuts. Vielfach ist es nur ein rauskopieren und dann so lange dran rum schrauben, bis es funktioniert. Dabei lernt man zwar auch viel auch viel über die einzelnen Funktionen, aber ich denke wenn du dir mein Quellcode komplett anschauen würdest, würdest du die Hände über den Kopf zusammen schlagen…

Was ich nachher damit erreichen will:
Ich habe eine Tabelle mit Spalten für:
Nachname; Vorname; Straße; Hausnummer; PLZ; Ort
Diese Einträge schreibe ich in die Listbox.
Mit einem Textfeld möchte ich in dieser Liste nun suchen. Wenn es geht würde ich es gerne so haben, das ich mit diesem Textfeld in allen Spalten also Nachname-Ort suchen kann

Bsp. Gebe ich Johanna an, soll er mir alles Datensätze in den Johanna steht anzeigen, und wenn es die Johannaxy Straße ist, dann halt diesen Datensatz auch.
Gebe ich eine PLZ an soll er mir alle Datensätze mit dieser PLZ anzeigen.
(Schön wäre es, nur wenn es geht, das er Groß und Kleinschreibung ignoriert.)

Das ganze ist teil eines „Bestell, Kassenprogramm“ Grundlegend ist dieses auch fertig, nur man will halt noch immer dazu lernen und hier noch ein gimmig und da noch eins… :wink: Kennst du sicher auch.

Zu deiner Frage wieso er Namen doppelt ausgegeben hat:
Mir fällt da nur ein, das er halt nach dem Textfragment xyz sucht.
beim 1. durchlauf findet er dieses Textfragment in zeile z.b. 4 und sucht dann weiter findet es in 5 und vielleicht noch 6
dann fängt er wieder von vorne an. Sucht…

Aber wenn ich ehrlich bin, mit „Like“ und co ist alles neuland für mich.
Wie kann ich mein Wissenstand beschreiben…
Ich weiß mir mit if und for zu arbeiten, habe mich jetzt vor ca ner woche in array eingelesen, klappt noch nicht so top, aber es wird…
Ich bin eher so ein try and error typ. So lange am coode rumbasteln, bis es geht, und es eine „unschöne“ Lösung wird ist es auch erstmal ok.

So genug jetzt für heute. Ich werde mich morgen noch mal in ruhe dran setzen und schauen was du mir versuchst zu erklären. Bis dahin "Daumendrücken für Deutschland :smiley:

Hallo Le,

[…] aber ich denke wenn du dir mein
Quellcode komplett anschauen würdest, würdest du die Hände
über den Kopf zusammen schlagen…

warum sollte ich? Nö, kein Gedanke. Ich habe ja genauso wie du angefangen. Nahezu alles aus Foren, Internet, F1,…

Bsp. Gebe ich Johanna an, soll er mir alles Datensätze in den
Johanna steht anzeigen, und wenn es die Johannaxy Straße ist,
dann halt diesen Datensatz auch.
Gebe ich eine PLZ an soll er mir alle Datensätze mit dieser
PLZ anzeigen.

Aha, jetzt kapiere ich auch was du mir da geschrieben hast mit Vorschleife A-G. Mit Vba machbar ist das auf jeden Fall. Dazu bastle wie schon geschrieben eine mappe mit mehr Datensätzen damit man auch gut testen kann beim Suchen-Finden-Listen.
In der sollten die Spaltenköpfe, also Spaltenüberschriften in deinem Interesse schon dem Original entsprechen. Du sparst dir dann Spaltenanpassungen im Code.

Diese „Johanna“ soll ich doch wohl nur in den Spalten suchen wo es auch Sinn macht, also in Textspalten wie Nachname, Vorname, Straße, Ort. Oder auch in PLZ, Telefon? Wie ist es andersrum, PLZ nur in Spalte PLZ suchen oder in allen Spalten? Du hast mich da grad verwirrt.

(Schön wäre es, nur wenn es geht, das er Groß und
Kleinschreibung ignoriert.)

Okay.

Das ganze ist teil eines „Bestell, Kassenprogramm“ Grundlegend
ist dieses auch fertig, nur man will halt noch immer dazu
lernen und hier noch ein gimmig und da noch eins… :wink: Kennst
du sicher auch.

Aber sicher, ich hab etliche ähnliche „Baustellen“ die nie fertig werden wollen *lächel*

Zu deiner Frage wieso er Namen doppelt ausgegeben hat:
Mir fällt da nur ein, das er halt nach dem Textfragment xyz
sucht.
beim 1. durchlauf findet er dieses Textfragment in zeile z.b.
4 und sucht dann weiter findet es in 5 und vielleicht noch 6
dann fängt er wieder von vorne an. Sucht…

Du hattest zwei For-Schleifen ineinander. In deinem Beispiel waren es ja 4 Gesamtdatenzeilen. Also hattest du dasda gebaut:

For A = 1 to 4
 For B = 1 to 4
 if Z=Cells(A,1) Then in LB rein

Alle 4 Datensätze erfüllten das Suchkriterium ein „W“ im Nachnamen zu haben. Nun läuft der Code. Zuerst ist A=1, also der erste oberste Nachname dran. Z ist dieser oberste Wert in Zelle A1. B-Schleife startet und da die IF-Bedg erfüllt ist kommt A1 in die Listbox bei B=1.

Bei B = 2,3,4 passiert nix da die If-Bedg unerfüllt ist. So, jetzt kommt A=2 in der ForA-Schleife dran. Bei B=1 passiert nix da Z (was ja A2 ist) nicht gleich A1 ist. Aber bei B=2,3,4 werden A2, A3, A4 in die LB geschrieben.

Jetzt würde korrekter Code beenden aber dein Code prüft noch durchdie ForA-Schleife A3 und A4. In der B-Schleife stimmt aber daß Z=A3 oder Z=4 ist also kommen da die doppelten in die LB.

Mein erster Code änderte also die ForA-Schleife ab sodaß sie nicht bis 4 läuft sondern nach 2 aufhört. Mit „Collection“ habe ich nur alle verschiedenen Nachnamen in A „aufgesammelt“. In Collection darf jedes Element nur EINMAL stehen, somit umfasst dann die Collection nur die zwei unterschiedlichen Nachnamen.

Anstatt ForA nahm ich dann:
For Zei = 1 To Anzahl Nachnamen in Collection
Diese Variante KÖNNTE Probleme machen wenn A nicht sortiert ist, deshalb meine Frage nach Sortierung.

Später merkte ich daß die erste For-Scleife unnötig ist und baute neuen Code.
Habe fertig, wenn du das kapiert hast von mir biste sehr sehr gut :smile:))

Aber wenn ich ehrlich bin, mit „Like“ und co ist alles neuland
für mich.

Na und. Irgendwann war ein Sandkasten für dich Neuland. Diese kreischenden Wesen die da rumturnen und dir das Schäufelchen klauen auch. Dann war die Schule Neuland. Dann dies dann das. Dann ein Handy als Neuland. Prompt am Anfang ab und zu vergessen die Vorwahl mitzuwählen :smile: Haste alles gelernt, gib „Like“ Zeit, Einwirkungszeit ins Hirn…

Gruß
Reinhard

Hallo

Nach einem doch sehr anstrengenden Tag habe ich mich eben wieder ran gemacht etwas hin und her zu programmieren.
Mit den Nachnamen klappt das echt super gut bin total beeindruckt. Mit den weiteren Feldern sieht das schon wieder anders aus. Ich glaub mein großes ? über den Kopf kann man nicht nur sehen, sondern auch fühlen :smiley: selbst durch die Leitung

Habe jetzt eine Excel Mappe angelegt mit ein paar mehr ausgedachten Daten.
Mit dieser solltest du genug zum Testen haben.

Ich danke dir schon mal im voraus, das du mir so seh…

Hallo Le,

Habe jetzt eine Excel Mappe angelegt mit ein paar mehr
ausgedachten Daten.

sehr schön, also EINEN Punkt meiner Nachfragen/Anregungen erledigt :smile:

Mit dieser solltest du genug zum Testen haben.

Ja, wenn ich wüßte was iich testen soll. Nachnamen klappen doch schon. Bei anderen Spalten warte ich auf Antwort.

Gruß
Reinhard

Oh tut mir leid ich dachte ich hätte es schon erwähnt :smiley:
Nunja egal :smile:

Ich möchte gerne mit der Textbox in allen Spalten suchen können
in Nachname bis Stadt.
Dabei soll er jeden Datensatz anzeigen, in dem der Zeichensatz der in der Textbox eingetragen wurde, anzeigen.

Beispiel
Albrecht, Johanna, Johannastraße 34 35433 Güttersloh
Gütterhafen, Jana, Hambergtraße 44 34023 Albrechthausen

steht in der Textbox „Albrech“
dann muss er beide Datensätze anzeigen, denn er findet einmal bei dem Nachnamen Albrecht etwas, und bei der Stadt Albrechthausen.
gebe ich nun 34 ein
sind es auch wieder beide Datensätze, bei dem einen die Hausnummer, bei dem anderen die PLZ.

Am besten wäre es natürlich wenn er klein und Großschreibung ignoriert.
Hoffe das war verständlich tu mich etwas schwer mit erklären xD

Hallo Le,

Oh tut mir leid ich dachte ich hätte es schon erwähnt :smiley:

ja, hast du, ich wollte es nur nicht glauben :smile: und fragte nochmal nach…

Erzeuge mit Einfügen—Modul im VB-Editor ein Modul. In Excel erstellst du über Entwicklertools—Einfügen einen Button um die Userform zu starten.
Nimm die „Schaltfläche“ aus den Formularsteuerelementen.

Nachdem du die untenstehenden Codes in die richtigen Module kopiert hast weist du dem Button durch Rechtsklick auf ihn das Makro „Start“ zu.

Gruß
Reinhard

In das Modul der Userform1:

Option Explicit

Private Sub TextBox1\_Change()
Dim Z As Long
LB\_Kundenliste.Clear
If Not TextBox1.Text = "" Then
 With Worksheets("Tabelle1")
 For Z = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
 If Application.CountIf(.Rows(Z), "\*" & TextBox1.Text & "\*") \> 0 Then
 LB\_Kundenliste.AddItem
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 0) = .Cells(Z, 1) & ", " & .Cells(Z, 2)
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 1) = .Cells(Z, 3) & " " & .Cells(Z, 4)
 LB\_Kundenliste.List(LB\_Kundenliste.ListCount - 1, 2) = .Cells(Z, 5) & " " & .Cells(Z, 6)
 End If
 Next Z
 End With
Else
 Call Fuellen(LB\_Kundenliste)
End If
End Sub

Private Sub UserForm\_Initialize()
With LB\_Kundenliste
 .ColumnCount = 3
 .ColumnWidths = "120 PT; 120PT"
End With
Call Fuellen(LB\_Kundenliste)
End Sub

In das Modul Modul1

Option Explicit

Sub Fuellen(LB)
Dim Zeilen As Long
With Worksheets("Tabelle1")
 For Zeilen = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
 LB.AddItem
 LB.List(LB.ListCount - 1, 0) = .Cells(Zeilen, 1) & ", " & .Cells(Zeilen, 2)
 LB.List(LB.ListCount - 1, 1) = .Cells(Zeilen, 3) & " " & .Cells(Zeilen, 4)
 LB.List(LB.ListCount - 1, 2) = .Cells(Zeilen, 5) & " " & .Cells(Zeilen, 6)
 Next Zeilen
End With
End Sub

Sub Start()
UserForm1.Show
End Sub

Ich bin sprachlos!!!

Reinhard du bist der beste :smiley: es klappt super genau so wie ich es möchte.
Gibt jetzt nur ein Problem für dich!
Da du das so gut gemacht hast, könnte es gut sein das ich mich noch mal an dich wenden werde :smiley:

Bis dahin, erstmal besten dank und eine schöne Restwoche.

Gruß
Le

Hallo

Ich habe den Code jetzt auseinander genommen und glaube ihn fast komplett verstanden zu haben. Er durchsucht ja die komplette Mappe nach den Wortteilen. Wie kann ich den Code so ändern, das nur die ersten 3 Spalten durchsucht werden?

Gruß

Ich habe den Code jetzt auseinander genommen und glaube ihn
fast komplett verstanden zu haben. Er durchsucht ja die
komplette Mappe nach den Wortteilen. Wie kann ich den Code so
ändern, das nur die ersten 3 Spalten durchsucht werden?

Hallo Le,

ersetze bitte:
If Application.CountIf(.Rows(z), „*“ & TextBox1.Text & „*“) > 0 Then
durch:
If Application.CountIf(.Range(„A“ & z & „:C“ & z), „*“ & TextBox1.Text & „*“) > 0 Then

Gruß
Reinhard

Super klappt mal wieder hervorragend. Wie ich es von dir gewohnt bin.