Office: VBA: For Each Schleife mit mehreren Bedingungen

Helfe beim Thema VBA: For Each Schleife mit mehreren Bedingungen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, erstmal möchte ich Euch eine schöne Osterzeit mit erholsamer Zeit wünschen.:rolleyes: Mein aktuelles Problem versuche ich schon seit... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Tauchmann, 7. April 2012.

  1. Tauchmann Erfahrener User

    VBA: For Each Schleife mit mehreren Bedingungen


    Hallo zusammen,

    erstmal möchte ich Euch eine schöne Osterzeit mit erholsamer Zeit wünschen.VBA: For Each Schleife mit mehreren Bedingungen :rolleyes:

    Mein aktuelles Problem versuche ich schon seit geraumer Zeit zu lösen, aber da ich noch nicht so fit in VBA bin, schaffe ich es einfach nicht.

    Ich erstelle eine Pivottabelle und möchte nun nach mehreren Begriffen filtern.
    Diese Begriffe beschränken sich auf maximal 5 und werden immer die gleichen bleiben.
    Nun kann es aber auch der Fall sein das mal ein Begriff nicht auftaucht.

    Mit anderen Worten: "VBA - bitte wähle alle Kriterien aus die ich in dein Code geschrieben habe und wenn mal ein Kriterium nicht da ist, dann mache beim nächsten weiter".

    Mein Code wo der Fehler auftritt lautet folgendermaßen:

    Code:
    With ActiveSheet.PivotTables("Test").PivotFields("Status")
    .Orientation = xlColumnField
    .EnableMultiplePageItems = True
    For Each ptItemDD1 In .PivotItems
    [B]If ptItemDD1 = "XXA" Or "XXB" Or "XXC" Or" XXD" Or "XXE" Then[/B]
    ptItemDD1.Visible = True
    Else
    ptItemDD1.Visible = False
    End If
    Next ptItemDD1
    End With
    
    Hat einer von Euch eine Idee wie man das lösen kann?

    Schöne und frohe Ostern
    Tauchmann
     
    Tauchmann, 7. April 2012
    #1
  2. schatzi Super-Moderator
    Hallo!

    ungetestet:


    If ptItemDD1 = "XXA" Or ptItemDD1 = "XXB" Or ptItemDD1 = "XXC" Or ptItemDD1 = "XXD" Or ptItemDD1 = "XXE" Then</pre>
     
    schatzi, 7. April 2012
    #2
  3. Beverly
    Beverly Erfahrener User
    Hi,

    bei mehereren Argumenten bietet sich die Verwendung von Select Case an, wodurch der Code übersichtlicher wird. In deinem Fall würde das so aussehen:

    Code:
    For Each ptItemDD1 In .PivotItems
       Select Case ptItemDD1
          Case "XXA", "XXB", "XXC", " XXD", "XXE"
             ptItemDD1.Visible = True
          Case Else
             ptItemDD1.Visible = False
       End Select
    Next ptItemDD1
    
    Ich kenne mich zwar mit Pivot nicht aus, aber mit ptItemDD1 sprichst du das Pivot-Objekt an und nicht den Namen ("XXA", "XXB" usw.). Um den Namen verwenden zu können, müsste der Code dann (aus meinem Verständnis heraus) so heißen:

    Code:
       Select Case ptItemDD1.Name
    Bis später,
    Karin
     
    Beverly, 7. April 2012
    #3
  4. miriki Erfahrener User

    VBA: For Each Schleife mit mehreren Bedingungen

    Zum einen, wie schatzi ja schon schrieb:

    Code:
    ' falsch:
    IF a=b OR c OR d OR ...
    ' richtig:
    IF a=b OR a=c OR a=d OR ...
    Um's deutlicher zu machen, mit Klammern:
    Code:
    IF (a=b) OR (a=c) OR (a=d) OR ...
    Was passiert: Jede Klammer ergibt durch den Vergleich "true" oder "false", was wiederum mit Bool'scher Algebra per AND, OR, ... zu einem Endergebnis zusammengeknotet wird. Bei OR z.B. reicht es, wenn mindestens eine () "true" ergibt, bei AND müssen alle () "true" ergeben.

    Die erste, quasi "falsche" Variante mit Klammern:
    Code:
    IF (a=b) OR (c) OR (d) OR ...
    macht, so auf den ersten Blick, nicht ganz so viel Sinn. Auf den zweiten Blick aber...

    Ein Gegenbeispiel:
    Code:
    IF (a=b) OR (true) OR (false) OR ...
    wäre völlig ok und würde im Endergebnis immer "true" ergeben, womit der THEN-Zweig durchlaufen wird. Wofür steht jetzt aber "XXB"? Ist das "true" oder "false"? Oder wird es, weil es eben nicht wirklich eines der beiden ist, als fehlerhaft abgewiesen? Das kommt ein wenig auf die Programmiersprache an und ist im Falle von VBA so, daß es zur Laufzeit abgewiesen wird. Hier werden nur die Werte "wahr" / "falsch" bzw. die numerischen Pendants "=0" und "<>0" akzeptiert, wobei "0" dann "falsch" ist, während jeder andere Wert "wahr" ist. Es würde also auch gehen:
    Code:
    IF (a=b) OR (-1) OR (0) OR ...
    Die Zeichenketten akzeptiert VBA aber nicht, obwohl es Sprachen gibt, die einen leeren String als "falsch" und entsprechend einen nicht leeren String als "wahr" akzeptieren.

    Und als kleine Ergänzung / Optimierung vielleicht noch:
    Code:
    [B]If ptItemDD1 = "XXA" Or "XXB" Or "XXC" Or" XXD" Or "XXE" Then[/B]
    läßt sich gut zusammenfassen zu:
    Code:
    [B]If left$(ptItemDD1,2) = "XX" Then[/B]
    Gruß, Michael
     
    miriki, 10. April 2012
    #4
  5. Tauchmann Erfahrener User
    Hallo zusammen,

    Nach einer Weile rumprobieren haben nun Eure Vorschläge Früchte getragen und das Makro macht nun das was es soll.
    SUPER VIELEN DANK

    Schöne Grüße
    Tauchmann
     
    Tauchmann, 15. April 2012
    #5
Thema:

VBA: For Each Schleife mit mehreren Bedingungen

Die Seite wird geladen...
  1. VBA: For Each Schleife mit mehreren Bedingungen - Similar Threads - VBA For Each

  2. Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA

    in Microsoft Excel Hilfe
    Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA: Hallo Leute, Hoffentlich könnt ihr mir hier helfen, ich krieg den Syntax einfach nicht hin (wahrscheinlich ist es auch totaler käse den ich programmiert habe). Also im Grunde soll eine Datei...
  3. Textteile aus Zelle mit mehreren Absätzen

    in Microsoft Excel Hilfe
    Textteile aus Zelle mit mehreren Absätzen: Hallo, ich habe folgendes Problem: Ich habe in einer Liste in einer Zelle mehrere Angaben aus denen ich Textteile (z.B. alles was in () oder {} ist) herausziehen will, um damit weiter zurechnen....
  4. Aufrufen Datei aus SharePoint per VBA

    in Microsoft Access Hilfe
    Aufrufen Datei aus SharePoint per VBA: Wer kann mir helfen. In meiner Firma gibt es Dateien in diversen Ordner in Form von SharePoints, worauf alle Kolleginnen und Kollegen zugreifen kann. Dort habe ich eine Excel-Vorlage, worin die...
  5. VBA For Schleife: Werte in EXCEL zwischen Speichern

    in Microsoft Excel Hilfe
    VBA For Schleife: Werte in EXCEL zwischen Speichern: Hallo liebe Community, ich habe leider ein kleines Problem und habe die Hoffnung, dass ihr mir helfen könnt. Ich sitze gerade an einer Excel welche bestimmte werte ausrechnen soll. Mein Gedanke...
  6. Glücksrad mit VBA und For-Schleifen

    in Microsoft Excel Hilfe
    Glücksrad mit VBA und For-Schleifen: Hallo zusammen! Da ich hier immer Hilfe finde wende ich mich mal wieder mit folgendem Problem an euch: Ich möchte in Excel etwas auslosen. Das ansich ist auch kein Problem. Damit es etwas...
  7. VBA For Schleife Wert in Verbundene Zelle

    in Microsoft Excel Hilfe
    VBA For Schleife Wert in Verbundene Zelle: Hallo Zusammen, ich habe folgendes Problem. Ich greife auf eine Oracle Datenbank zu und hole mir die Werte per Recordset. Meine Tabellen Vorlage habe ich soweit angepasst das alle Daten an...
  8. VBA - For Schleife

    in Microsoft Excel Hilfe
    VBA - For Schleife: Hallo ich hab schon viele Schleifen programmiert und mir ist der Fehler vlt paar mal passiert, aber diesmal hab ich keine Ahnung warum er kommt. Also Problem ist simpel jedoch so simpel, das...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden