Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - Oder Bedingung in Makro integrieren

VBA - Oder Bedingung in Makro integrieren
Jonathan
Hallo liebe Experten,
in einer Tabelle müssen Materialien bestimmte Kriterien (5 Stk) erfüllen, dann wird jeweils ein Material gezählt. Duplikate werden also nicht berücksichtig.
Hierfür wurde vergangen Freitag ein Makro in diesem Forum erstellt (Vielen Dank nochmals).
Soweit funktioniert alles auch wunderbar.
Das Problem ist nun, dass eine der Bedingungen ein "Oder"-Kriterium ist (Sprich, es gibt zwei Kriterien für eine Spalte)
Wenn ich dieses Problem mit einem zweiten Makro löse, hat es zur Folge, dass ein Material welches beim ersten Makro bereits gezählt wurde, im zweiten Makro nochmals gezählt wird - Dies darf nicht sein.
Wie kann ich nun also, im ersten Makro die Oder-Bedingung einbauen?
Zur besseren Vorstellung ist hier eine Bsp-Datei mit den entsprechenden Makros und Erklärungen:
https://www.herber.de/bbs/user/62946.xls
Vielen Dank schon mal.
Gruß
Jonathan

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

Betreff
Benutzer
Anzeige
AW: VBA - Oder Bedingung in Makro integrieren
06.07.2009 15:02:58
Ramses
Hallo
Die EXCEL VBA Hilfe ist bessr als ihr Ruf, und ein wenig nachdenken sicher nicht falsch :-)
Ich lade mir dazu deine Datei nicht runter, das kannst du selber anpassen.
Hier die "Logik" dahinter
If Range("A1") = "x" or Range)"A1") = "y" Then
Gruss Rainer
AW: VBA - Oder Bedingung in Makro integrieren
07.07.2009 10:40:32
Jonathan
Hallo,
vielen Dank für den Hinweis... =) Das habe ich selbstverständlich schon ausprobiert. Leider hat es im vorhandenen Code nicht funktioniert.
Der Code wird später im Tabellenblatt mit =krit_D(A2:F15;K1;K2;K3;K4;K5)
Wenn ich nun in den Code ein OR arg6 einfüge und dann die entsprechende Zelle (M4) in die obige Formel reinschreibe funktioniert es nicht.
Wie bekomme ich das am besten hin?
'#### Für Kriterium D ####

Public Function krit_D(Bereich As Range, arg1, arg2, arg3, arg4, arg5) As Long
Dim arr As Variant
Dim L As Long
Dim Dic1 As Object
Dim Dic2 As Object
Set Dic1 = CreateObject("Scripting.dictionary")
Set Dic2 = CreateObject("Scripting.dictionary")
arr = Bereich
For L = 1 To UBound(arr)
If arr(L, 1) = arg1 Then
If arr(L, 2) = arg2 Then
If arr(L, 3)  arg3 Then
If arr(L, 4) = arg4 Then 'Oder arg6 (arg6 steht in dem Fall in M4 ("C") )
If arr(L, 6) = arg5 Then
If Not Dic2.exists(arr(L, 5)) Then
Dic2(arr(L, 5)) = 0
Dic1(Join(Array(arr(L, 1), arr(L, 2), arr(L, 3), arr(L, 4), arr(L,  _
5), arr(L, 6)), vbTab)) = 0
End If
End If
End If
End If
End If
End If
Next
krit_D = Dic1.Count
End Function


Vielen Dank.
Gruß
Jonathan

Anzeige
Problem gelöst
07.07.2009 12:48:41
Jonathan
Hallo zusammen,
das Problem wurde gelöst.
Es hat einfach der Arrayteil davor gefehlt...
Gruß
Jonathan
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge