Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Leere Vergleichskriterien in IF Code überspringen?

Leere Vergleichskriterien in IF Code überspringen?
02.04.2008 11:30:00
Andreas
Hallo Excel Freunde,
je mehr ich mich in VBA einarbeite, desto mehr Spaß macht es und immer wieder sehe ich dadurch neue großartige Möglichkeiten, die ihrerseits wieder Fragen induzieren. Das ist interessant, bringt mich zuweilen aber auch wieder schnell an meine Grenzen der VBA Erfahrung. So auch heute Morgen. Mit Hilfe des Forums habe ich ein Makro erstellen können, welches Listen in Abhängigkeiten generiert. Beispielsweise nur alle Datensätze mit dem Attribut „aktiv“ auflisten. Oder noch weiter auf „aktiv“ (Status) + „Europa“ (Region) eingrenzen. Das Funktioniert sehr gut. Nun habe ich mich jedoch gefragt, was passiert, wenn ich eine Codezeile so aufgebaut habe, daß sie zwei Kriterien prüft und dann jedoch ein Kriterium davon Leer („“) ist. Ich könnte vorher eine weitere If Prüfung einsetzen.
1. Lösungsidee:
Wenn Vergleichskriterium (Region) = „“, dann
vergleiche nur den Status
sonst
vergleiche Staus und Region.
Das ist OK. Aber bei mehreren Vergleichskriterien ist es unübersichtlich immer solch umfangreiche IF Abfragen zu konstruieren.
2. Lösungsidee:
Wenn Vergleichskriterium (Region) = „“, dann setze Region als Jokerzeichen „*“ (PS: Was ist das korrekte Jokerzeichen in VBA. Mit „*“ hat es bei mir nicht funktioniert?!
Das Problem ist dabei, daß das Makro dann immer alle Kriterien durchläuft, auch wenn diese Leer, bzw. als Joker gesetzt sind. Das frisst Rechenleistung an einer Stelle, wo es nicht sein muß. Die Makros laufen auf über 5.000 Zeilen, in denen verglichen wird. Bei der IF Prüfung wird immer der optimale Code ins Rennen geschickt, aber bei einer großen Anzahl von Prüfungen, habe ich dann eine arg komplexe IF Verschachtelung.
3. Lösungsidee:
Ich setze vor jeder Prüfung per se die Frage, ob das Referenzkriterium, gegen das die Prüfung erfolgen soll, überhaupt vorhanden ( „“) ist. Wenn es leer ist, soll es in der CodeZeile übersprungen werden.
Wenn Region = „“, dann überspring diese Prüfung und gehe gleich zur nächsten mit AND folgenden Prüfung. Vermutlich muß man in der Zeile einbauen. IF Region = „“, then set Prüfungsergebnis ungesehen auf TRUE.
Aber daran verbeiße ich mich nun schon seit fast zwei Stunden und sehe in meiner Datei vor lauter Zeilen und Ansätzen nicht mehr durch.
Anbei habe ich eine Beispieldatei kreiert, die den IF Weg aufzeigt und ein Kommentar am Code, der die 3. Lösungsidee noch einmal illustriert.
https://www.herber.de/bbs/user/51204.xls
Ich würde mich sehr freuen, wenn der ein oder andere von Euch mich auf die „richtige Fährte“ setzen kann.
Vielen Dank und Grüße, Andreas Hanisch

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

Betreff
Datum
Anwender
Anzeige
AW: Leere Vergleichskriterien in IF Code übersprin
02.04.2008 11:58:23
Renee
Hi Andreas,
Schön, dass du gefallen an VBA findest.
Allerdings sehe ich dein Problem, bzw eine komplizierte VBA Lösung dazu nicht.
Was spricht den dagegegen alles mit dem Autofilter zu filtern und anschliessend nur die gefilterten Werte in das Zielgebiet zu kopieren ?
Da wird das IF-Gefummel durch die Autofilter-Funktion automatisch abgedeckt.
Aber vielleicht versteh ich wieder mal alles falsch ?
GreetZ Renée

AW: Leere Vergleichskriterien in IF Code übersprin
02.04.2008 13:56:53
Andreas
Hi Renée,
das mit dem Autofilter klingt gut. Es ist ein Ansatz, den ich auf alle Fälle einmal probieren werde. Ich habe eine grobe Ahnung wie es gehen könnte. Aber habe ich dann das Problem nicht in grün, daß wenn ich drei Kriterienprüfungen habe (Krit1, Krit2, Krit3). Krit2 jedoch „“ ist. Will der Filter dann nicht für Krit2 alle leeren Zellen filtern, die es ja nicht gibt?!
Ich muß es testen und mich reindenken oder hast Du einen Code Ansatz der mir aufzeigen kann, ob ein Weiterverfolgen der von Dir aufgebrachten Idee sinnvoll ist?
Und das ist es, was ich meine… über den Filter zu gehen ist wieder ein neuer viel versprechender Ansatz, der wieder neue Möglichkeiten (!) und Fragen bringt. Das ist doch genial!
Grüße, Andreas

Anzeige
AW: Leere Vergleichskriterien in IF Code übersprin
02.04.2008 14:27:49
Renee
Hi Andreas,
Der Ansatz ist einfach.
Schalt den Filter (Auto oder Spezial) ein.
Schalt den Makrorekorder ein.
Filtere nach deinem Gusto.
Selektier die gefilterten Zellen und kopier sie in den Zielbereich.
Schalt den Makrorekorder aus und analysier den Code, arbeite in möglichst so um, dass keine .Select vorkommen... s.a. hier.
Greetz Renée

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige