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… 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 ))
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 Haste alles gelernt, gib „Like“ Zeit, Einwirkungszeit ins Hirn…
Gruß
Reinhard