Office: Schleife mehrmals durchlaufen

Helfe beim Thema Schleife mehrmals durchlaufen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Forum, ich versuche mich weiter an VBA. Ich habe mir eine Schleife erstellt, die in einer bestimmten Spalte, die ich nach der Überschrift... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von akku, 30. August 2014.

  1. Schleife mehrmals durchlaufen


    Hallo Forum,

    ich versuche mich weiter an VBA.
    Ich habe mir eine Schleife erstellt, die in einer bestimmten Spalte, die ich nach der Überschrift bestimme, nach einem bestimmten Zellinhalt sucht. Bei einem Fund wird die Zeile eingefärbt und anschließend alle farbigen Zeilen ausgeblendet. Das habe ich soweit auch hinbekommen.
    Nun möchte ich das ganze aber mehrmals laufen lassen. Also wieder Zeilen einfärben und ausblenden, aber mit Suche nach anderem Zellinhalt und in einer anderen Spaltenüberschrift.

    Ich möchte vermeiden, dass ich die selbe Schleife immer wieder schreiben muss. Kann ich es bewerkstelligen, wieder an den Anfang der Schleife zu springen, um diese mit den neuen Variablen (Überschrift und Suchbegriff) erneut zu durchlaufen?

    Vorab schon mal danke für Eure Anregungen.
    Akku

    :)
     
  2. Hallo,

    zeig einmal die Schleife bisher, dann kann man sie bestimmt anpassen *Smilie

    Gruß
    Santa
     
    Mc Santa, 1. September 2014
    #2
  3. Hier mein bisheriger Code

    Code:
     
  4. Schleife mehrmals durchlaufen

    Hallo,

    ich habe dir den Code mal angepasst und etwas verschnellert.
    Mir ist noch nicht ganz klar, warum du innen zwei Schleifen hast, vermutlich kann man das noch besser lösen. Aber dazu bräuchte ich eine Beispieldatei und eine allgemeine Aufgabenstellung.

    Code:
    VG
     
    Mc Santa, 1. September 2014
    #4
  5. Moin Mc Santa
    Das sehe ich genauso wie du. Die kann doch wegfallen.
    In der ersten Schleife werden die Zellen gefaerbt und in der zweiten alle gefaerbten ausgeblendet.
    Code:
    sollte doch auch passen.
    gruss hary
     
  6. An dieser Stelle erst mal DANKE für Eure schnelle Hilfe.
    Ich hoffe mit den nun folgenden Zeilen niemanden zu verärgern und weiterhin Hilfe zu bekommen...

    Ich stehe erst am Anfang meiner VBA-Kariere und mein Ziel ist es VBA zu lernen und zu verstehen.

    Den Code, den ich geposted habe, habe ich selbst erarbeitet und verstehe ihn deswegen auch. Wenn ich nun auf Grund meiner Frage einen anderen, wahrscheinlich eleganteren und schnelleren Code bekomme, könnte ich damit meine aktuelle Aufgabe lösen, aber habe mangels Verständnis nichts gelernt und kann den code (erst mal) nicht nachvollziehen.

    Ich glaube durch den Antwortcode folgendes für mich herausgefunden zu haben:

    - Um eine Schleife mehrfach mit unterschiedlichen Bedingungen laufen zu lassen muss ich ein (bzw. 2) Array definieren. Ist das richtig? Oder gibt es noch andere Möglichkeiten?

    - Es wurde die Funktion "UNION" verwendet. Werden hiermit alle erfüllten Bedingungen "gesammelt", um sie dann in "einem Rutsch" z.B. einzufärben?
    Wenn das so ist, kommt diese Funktion für mich nicht in Frage, da ich gelesen habe, dass UNION nur 30 Bereiche verknüpfen kann. Meine Tabelle wird aber mehrere Hundert Fundstellen haben, die gefärbt und ausgeblendet werden sollen.

    Was hat es für einen Vorteil anstatt "If" die Verneinung "If Not ... Is Nothing" zu nehmen?

    Wäre es möglich meinen Code als Basis zu belassen und damit den mehrfachen Durchlauf der zwei Schleifen mit unterschiedlichen Bedingungen hinzubekommen?
     
  7. Hallo,

    Ich begrüße die konkreten Nachfragen, denn ich sehe, dass du dich mit dem Code beschäftigst und nicht nur "verstehe ich nicht" schreibst, daher auch gerne Antworten auf deine Fragen *Smilie

    Die Schleife lässt sich am besten über einen Array realisieren, denn dann kannst du nacheinander die Arrayeinträge ansprechen und deine Aktionen ausführen. Vielleicht gibt es (wie so oft) auch noch andere Möglichkeiten, aber der Array ist eine gute davon.

    Generell sind Schleifen die jede Zeile einzeln prüfen nicht sonderlich schnell. Der Code von dir ganz oben kann bei einer Tabelle mit 1000 Zeilen schon eine Weile dauern. Zellzugriffe (If .Cells(Zeile, Suchspalte).Value 652) dauern lange, und noch länger dauern Formatänderungen. Durch die Art der Bedingung, habe ich keine Möglichkeit gefunden, auf die Schleife ganz zu verzichten, aber immerhin kannst du hier Union benutzen:
    Union vereint zwei Bereiche zu einem, das hast du richtig erkannt. Ich sammel erst alle Bereiche, die ich färben oder ausblenden will und mache dann alle Bereiche gleichzeitig ("in einem Rutsch").
    Über die Einschränkung von nur 30 Bereichen brauchst du dir keine Gedanken machen, das gilt für einen Aufruf der Funktion Union. Du kannst also bei einem Aufruf Union(Bereich1, Bereich2, Bereich3, ..., BereichN) maximal 30 Bereiche auf einmal vereinen. In meiner Funktion sind es aber immer nur zwei Bereich, nämlich der bis dahin eingesammelte Bereich, und der gerade ermittelte Bereich. Das kannst du (theoretisch) unendlich fortsetzen.

    Über die Bedingung If Not objectVariable is Nothing prüfe ich, ob ein Objekt existiert, denn sonst tritt danach ein Fehler auf. Du kannst hier auch prüfen: If objectVariable is Nothing und dann die Fälle umdrehen. Das ist Geschmackssache, denke ich. Meistens gibt es ein Objekt, dass ist für mich dann der "Normalfall" und wenn es kein Objekt gibt, dann behandel ich die "Ausnahme".


    Man kann deinen Code auch in der alten Schreibweise behalten, dann hast du aber wie oben beschrieben eine sehr viel längere Laufzeit. Das empfehle ich nicht.

    Wenn ich etwas zu oberflächlich beschreibe, oder sonst Fragen auftauchen, dann gerne Fragen.
    Freue mich über Feedback.

    Viele Grüße
    Santa

    PS:
    Ich sehe gerade, dass du bei der IF-Abfrage eigentlich etwas anderes gefragt hast:
    Du musst auf If Not ... Is Nothing prüfen, weil du nicht abfragen kannst If objectVariable is Something. Du kannst nur fragen, ob es noch Nothing ist.
     
    Mc Santa, 2. September 2014
    #7
  8. Schleife mehrmals durchlaufen

    Hallo Santa,

    Deine Antwort beruhigt mich.
    Ich werde mich erst mal an "Array wagen und versuchen da durch zu sehen.

    Mein Gedanke war folgender:
    Die Tabelle ist sehr gross (mehrere Tausend Zeilen)
    Nun wollte ich erst nach der ersten Bedingung suchen und die Funde färben und gleich ausblenden. Somit werden es beim zweiten Durchlauf mit der zweiten Bedingung weniger Zeilen sein, die durchsucht werden müssen usw.
    Ich dachte, so einen Geschwindigkeitsvorteil zu bekommen...

    Gruss
    akku
     
  9. Hallo,

    der Ansatz funktioniert so nicht, da in der aktuelle Schleife auch ausgeblendete Zeilen immer wieder überprüft werden.

    Gruß
    Santa
     
    Mc Santa, 2. September 2014
    #9
  10. Moin
    Die Schleife nimmt auch ausgeblendetet Zeilen mit.
    Wie waer es mit Autofilter? Und dann die sichtbaren bearbeiten.
    gruss hary
     
  11. Moin

    und durch Autofilter ausgeblendete Zeilen werden nicht mehr durchlaufen?
    Dann wäre das sicher der bessere Ansatz.

    Gruss
    akku
     
  12. Hallo,

    man kann jeweils bei der Schleife nur die sichtbaren Zellen durchlaufen, aber mit Autofilter würde es noch einfacher gehen.

    Erstelle mal eine kleine Beispieldatei und benenne deine Überschriften und die Kriterien, dann bastel ich den Code dazu *Smilie

    Viele Grüße
    Santa
     
  13. Schleife mehrmals durchlaufen

    Hallo Santa,

    ich habe mir Deinen Code mal genauer angesehen und habe da so meine Schwierigkeiten... Ich habe Kommentare dazu geschrieben.
    Könntest du mir für die Zeilen ab "??? ab hier unklar" mit Worten erklären, was dort jeweils passiert? Das wäre echt hilfreich für mich.

    Code:
    Wenn ich das Ganze aus Geschwindigkeitsgründen mit Autofilter mache, würde das dann auch mit dem Array funktionieren? also bevor er die Schleife erneut mit der nächsten Bedingung aus dem Array durchläuft, erstmal das Ergebnis "weg filtern"?

    Gruss
    akku
     
  14. Hallo,

    anbei der Code etwas verkürzt, so wie hary es in Antwort #5 vorgeschlagen hat und mit Kommentaren versehen.
    Eine Anmerkung: Man muss bei Union erst prüfen, ob der Bereich schon existiert, sonst gibt die Funktion einen Fehler.
    Code:
    Fragen gerne.
    Viele Grüße
    Santa
     
  15. Hallo Santa,

    ich habe mal eine Beispieldatei hochgeladen.
    Nach folgenden Kriterien soll gesucht und gefiltert werden:

    von: alle Werte außer 652
    nach: alle Werte größer 610
    StPl: alle Werte kleiner/gleich 1000
    LiefDat: alle Werte größer 201400KW, wobei KW über Userform abgefragt werden soll.

    Gruss
    akku
     
Thema:

Schleife mehrmals durchlaufen

Die Seite wird geladen...
  1. Schleife mehrmals durchlaufen - Similar Threads - Schleife mehrmals durchlaufen

  2. Verkettung von Zellen - Schleife

    in Microsoft Excel Hilfe
    Verkettung von Zellen - Schleife: Hallo, folgendes Problem: Ich möchte in einer Tabelle die Texte in Spalte A mit den Texten in Spalte B verketten. Dazu benutze ich folgenden Code: Sub VerkettungAB() Range("E2").Value =...
  3. While-Schleife wird nicht beendet

    in Microsoft Access Hilfe
    While-Schleife wird nicht beendet: Hallo Forum Ein aus einem Unterformular soll in ein Feld im Hauptformular übernommen (fix abgespeichert) werden. Das Feld wurde nachträglich im Hauptformular (+ Tabelle) eingefügt. Nun habe ich...
  4. For Next Schleife

    in Microsoft Excel Hilfe
    For Next Schleife: Hallo zusammen, da bin ich wieder und wie kann es anders sein mit einem Problem. Ich habe eine Tabelle (im Anhang) dort soll die Werte in Zellen a/b/f kopiert werden und in die erste frei Zeile...
  5. VBA Schleife kopieren und einfügen von Spalten

    in Microsoft Excel Hilfe
    VBA Schleife kopieren und einfügen von Spalten: Hallo Zusammen, Ich habe auf einem Tabellenblatt eine variable Anzahl an Spalten mit Daten die auch eine variable Anzahl an Zeilen haben, auch mit Lücken in den Zeilen. Die Spalten mit den Infos...
  6. VBA: Variable Anzahl Zeilen mit Suchkriterien finden und kopieren

    in Microsoft Excel Hilfe
    VBA: Variable Anzahl Zeilen mit Suchkriterien finden und kopieren: Hallo zusammen, ich konnte bislang nur bruchstückhafte Ansätze zu meinem Problem finden, jedoch keinen um mehrere Kriterien zu erfassen und anschließend zu ordnen, daher brauche ich (mal wieder)...
  7. Makro mehrmals ausführen (Schleife)

    in Microsoft Excel Hilfe
    Makro mehrmals ausführen (Schleife): Hallo! Ich habe folgendes Problem und bin leider in VBA nicht sehr bewandert: In Excel 2010 habe ich eine Simulation von Aktienkursen laufen, anhand derer sich der Hedgefehler für jeden...
  8. For Each Schleife mehrmals nach gleichem Wert suchen

    in Microsoft Excel Hilfe
    For Each Schleife mehrmals nach gleichem Wert suchen: Hallo Ich hänge seit einigen Tagen an einem Problem. Ich möchte Daten aus einer Tabelle über Userform D auslesen und in Userform wieder ausgeben. Das habe ich auch soweit hinbekommen. Ich suche...
  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