IF-Abfrage dynamisch erstellen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: IF-Abfrage dynamisch erstellen
von: Chris
Geschrieben am: 15.11.2015 18:10:48

Hallo zusammen,
Ich habe ein Problem mit einer Excel-Tabelle und deren integriertem VBA-Script.
Folgende Ausgangssituation:
Tabellenblatt "Masterdaten"
Inhalt eine Tabelle mit 6000 Zeilen und 10 Spalten
Tabellenblatt "Gruppen"
Inhalt eine Tabelle mit 10 Zeilen (stellt die Werksgruppe in Spalte A dar" und 8 Spalten (stellen die Werke dar)
In der letzten Spalte wird die Formel für die IF-Bedingung im VBA zusammengestellt.
Das VBA-Script soll nun die Daten aus dem Tabellenblatt "Masterdaten" in eine Datei exportieren und dabei nur die Daten exportieren in denen die Bedingung aus dem Tabellenblatt "Gruppen" übereinstimmt.
Beispiel "Gruppe" ist und die dahinterliegenden Werke sind WerkA und WerkB
Die IF-Bedinung soll bei allen Zeilen aus dem Tabellenblatt "Masterdaten" nur die Zeilen bearbeiten in denen die Spalte C der jeweiligen Zeile den Wert WerkA oder WerkB hat.
For 1 to 6000
If Cells(C, Zeile) <> "WerkA" And Cells(C, Zeile) <> "WerkB" Then
'Zeile wird von der Bearbeitng ausgeschlosssen
exit for
Else
'Zeile wird weiter bearbeitet
End IF
Next
Wenn ich die IF-Bedingung manuell eintrage funktioniert die Formel perfekt. Da sich die Bedingung aber häufig ändert wollte ich die Formel in dem Tabellenblatt "Gruppen" in der letzten Spalte automatisch generieren (funktioniert) und dann mittels einer Variablen nutzen.
ML_Filter = WorkSheets("Gruppen").Cells("J2")
'Variable ML_Filter enthält dann
' Cells(C, Zeile) <> "WerkA" And Cells(C, Zeile) <> "WerkB"
'Wert des Filter wurde mit MsgBox geprüft
For 1 to 6000
If ML_Filter Then
'Zeile wird von der Bearbeitng ausgeschlosssen
exit for
Else
'Zeile wird weiter bearbeitet
End IF
Next
Bei der obigen Implementierung bekomme ich immer den Fehler:
Fehler 13: Typen unverträglich
Kann mir jemand mit einer Idee helfen, wie ich die IF-Abfrage dynamisch gestalten kann. Die Anwender können das nicht in VBA anpassen.
Vielen Dank für die Hilfe im vorraus.
Chris

Bild

Betrifft: Beispieldatei
von: Michael
Geschrieben am: 15.11.2015 19:18:37
Hi Chris,
ich würde es vorziehen, wenn Du uns "echtes" VBA zitieren würdest: For 1 to 6000 kann nicht laufen.
Was Du in J2 rechnest, wissen wir auch nicht bzw. ob Du hier pro Schleifendurchlauf irgendwelche Werte zuweist.
Kurzum: wir sind keine Hellseher, um am einfachsten läßt sich ein Fehler mit einer anonymisierten Beispieldatei beheben.
Schöne Grüße,
Michael

Bild

Betrifft: Beispieldatei
von: Chris
Geschrieben am: 16.11.2015 09:23:50
Hallo zusammen,
Anbei eine Beispieldatei mit Daten und den Scripten. Die Problempassage ist mit 'Forum: gekennzeichnet. Sie befindet sich circa in der Mitta des allgemeinen VBA-Codings.
https://www.herber.de/bbs/user/101543.zip
Vielen Dank für die Hilfe im vorraus.
Chris

Bild

Betrifft: Falsche Excel Version angegeben
von: Chris
Geschrieben am: 16.11.2015 10:15:25
Im Beitrag ist die falsche Excelversion angegeben. Es handelt sich um ein Dokument, welches mit der Excel Version Office Standard 2013 erstellt wurde.
Der Dateianhang ist in der Folgenachricht vom 16.11.2015 um 09:23:50 hinterlegt.

Bild

Betrifft: Test mal...
von: Michael
Geschrieben am: 16.11.2015 19:37:41
Hi Chris,
ich habe Deinen Code etwas aufgepäppelt und insbesondere an den Anfang des Moduls ein "option explicit" gesetzt, das sorgt nämlich dafür, daß Du Deine Variablen sauber deklarieren mußt.
Weiterhin habe ich die Logik geändert: zu Beginn werden alle Werte, soweit vorhanden, in einen (Filter-) String eingelesen, der dann wiederum in der Schleife ausgewertet wird.
Die Ausgabe sieht prinzipiell gut aus, allerdings darfst Du Dich beim ersten Test nicht wundern, daß Du im Browser scheinbar "nichts" siehst, denn letzterer zeigt bei einer Tabellenbreite von 2300 oder so die "erste" Spalte mit den nbsp so breit an, daß Deine Wert erst ganz rechts erscheinen.
Ich habe (fast) überall, wo ich was geändert habe, ein "Michael" als Kommentar gesetzt.
Die Datei: https://www.herber.de/bbs/user/101568.zip
Happy Exceling,
Michael

Bild

Betrifft: Rückmeldung?
von: Michael
Geschrieben am: 20.11.2015 19:01:23
Hi Chris,
funktioniert's?
Melde Dich mal,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "IF-Abfrage dynamisch erstellen"