Office: Loop / Code soll mehrere Tabellen durchlaufen

Helfe beim Thema Loop / Code soll mehrere Tabellen durchlaufen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen Ich wende mich erneut mit einer VBA-Problemstellung an euch. Und zwar habe ich in einer Datei verschiedene Sheets, welche in ihrer... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von adrian.dicamillo, 30. November 2020.

  1. Loop / Code soll mehrere Tabellen durchlaufen


    Hallo Zusammen

    Ich wende mich erneut mit einer VBA-Problemstellung an euch. Und zwar habe ich in einer Datei verschiedene Sheets, welche in ihrer „Art“ folgendermassen aufgeteilt und vorhanden sind:

    1) Sheetart „Basis-Tab“ -> kommt nur 1x vor
    2) Sheetart „Zusammenzug“ -> kommt nur 1x vor
    3) Sheetart „Kalk-Tab“ -> kommt nur 1x vor und ist ausgeblendet
    4) Sheetart „MusterX“ -> kommt x-fach vor (in der angefügten Musterdatei 3x)

    Die unter 4) erwähnten Sheets des Typs „MusterX“ sind immer gleich aufgebaut: die Sheets beinhalten je zwei Tabellen, welche je einen identischen Aufbau aufweisen aber unterschiedliche Werte enthalten.

    Soviel zur Ausgangslage, nun zur Problemstellung:
    Anfang eines neuen Geschäftsjahres sind sämtliche Dateien neu abzuspeichern (-> neues Jahr) und die Werte sind entsprechend zu aktualisieren (d.h. die Endwerte des Vorjahres müssen zu Anfangswerten des neuen Jahres werden sowie gewisse Spaltenwerte müssen gelöscht werden). Meine Absicht ist es, mittels eines Codes die notwendige Übertragung der „Endwerte“ zu neuen „Anfangswerte“ und die „Löschung“ für die gesamte Datei bzw. für sämtliche Sheets des „MusterX“ in einem Wisch vorzunehmen (anstelle einer mühsamen, händischen Lösung oder einer Code-Ausführung je Sheet [es gibt Dateien mit bis zu 30 solcher MusterX-Sheets]*eek.gif*).

    Einen entsprechenden Code (Sub AnBu_DatenUebertragen()) habe ich bereits programmiert und habe versucht, das Ganze mittels eines Loops auf alle Tabellenblätter auszudehnen, der entsprechend Codebereich lautet:

    Dim WsTabelle As Worksheet
    For Each WsTabelle In Sheets
    With WsTabelle)
    ‘Code-der-je-MusterX-Sheet-ausgeführt-werden-soll
    End With
    Next WsTabelle

    Aber irgendwie will das nicht funktionieren. Bei Ausführung des Codes wird jeweils nur ein einziges (wohl das aktive) Sheet bearbeitet *mad.gif* .
    WEITER kommt hinzu (und hier habe ich noch keine Lösung), dass die eingangs erwähnten Sheetarten Nrn. 1, 2 und 3 (Basis-Tab; Kalk-Tab; Zusammenzug) zwingend von diesem Loop ausgenommen sein müssen. Ferner sollte der Code gewährleisten, dass später hinzugefügte Sheets des Typs „MusterX“ im nächsten Jahr ebenfalls bei der Code-Ausführung berücksichtigt werden

    Für euer Hilfe und Unterstützung bin ich dankbar *rolleyes.gif*.
    Gruss
    Adrian

    :)
     
    adrian.dicamillo, 30. November 2020
    #1
  2. Hallo,

    wie wäre es so ...
    Code:
    Sabina
     
    Flotter Feger, 2. Dezember 2020
    #2
  3. Hallo Sabina

    Danke für deine Antwort. Das Problem ist, dass die Sheets des hier genannten Typs "Muster" in den "Produktiv-Dateien" allesamt gänzlich unterschiedliche Namen haben... Beispielsweise "Anlage_X" oder "Fahrzeug_Y", "Gebäude_Z".

    Somit dürfte die Variante mit "If.name..." nicht praktikabel sein, da
    1. ich wohl alle Sheets mit ihrem Namen direkt im Code einschreiben müsste (bei über 30 Sheets nicht sooooo praktisch *wink.gif*
    2. allenfalls angepasste Sheet-Namen zu einem Fehler bei der Code-Ausführung führen würden
    3. neu hinzugefügte Sheets durch den Code - ohne manuelle Anpassung des Codes selbst - nicht berührt werden würden

    Gäbe es eine Möglichkeit, den Code so zu definieren, dass der Befehl 'Alle Sheets ausser die Sheets "Zusammenzug", "Basis-Tab", "Kalk-Tab" ' lauten würde? Irgendwie habe ich das Gefühl, dass die Ausklammerung der nicht zu bearbeitenden Sheets die praktikablere Lösung in meinem Fall sein könnte - sofern dies natürlich möglich ist...

    Gruss
    Adrian
     
    adrian.dicamillo, 2. Dezember 2020
    #3
  4. Loop / Code soll mehrere Tabellen durchlaufen

    Moin
    Meinst du so?
    Code:
    gruss hary
     
  5. moin hary

    danke für deine antwort und vorschlag. habe den code entsprechend angepasst (s. Datei). jedoch erfolgt nach wie vor keine bearbeitung der anderen sheets. es wird jeweils nur das aktuelle sheet bearbeitet.

    irgendwelche vorschläge, was mit dem code nicht stimmen könnte?

    gruss
    adrian
     
    adrian.dicamillo, 3. Dezember 2020
    #5
  6. Hi,
    ohne Deinen Code detailliert getestet zu haben, hier:

    Code:
    greifst Du immer auf das aktive Blatt zu, ist das gewollt?

    Evtl. eher so?

    Code:
     
    ReginaR, 3. Dezember 2020
    #6
  7. Hallo Regina

    Danke für deine Antwort. Der "ActiveSheet"-Teil kommt daher, dass ich ursprünglich den Code separat pro Blatt ausführen wollte bzw. die Aufgabenstellung so angegangen bin.

    Habe deinen Vorschlag ausprobiert - funktioniert leider auch nicht wie gewünscht bzw. ich erhalte nun den Fehler "Laufzeitfehler 1004, die Select-Methode des Range-Objektes konnte nicht ausgeführt werden". Debuggen ergibt den Fehler in folgenden Bereich:
    Code:
    Wenn ich bei besagtem Code-Teil vor Range ein Punkt setze (also .Range(...)) funktioniert es leider auch nicht bzw. erhalte immer noch denselben Fehler.

    Sry - ich bin ein ziemlicher VBA-Anfänger - irgendwo stehe ich wohl auf dem "Schlauch"... *rolleyes.gif*
     
    adrian.dicamillo, 3. Dezember 2020
    #7
  8. Loop / Code soll mehrere Tabellen durchlaufen

    ... was soll denn in der Zeile passieren? D.h. was soll selektiert werden?

    Selects sind im Übringen in der Regel überflüssig, aber das ist ein anderes Thema....
     
    ReginaR, 3. Dezember 2020
    #8
  9. der Befehl hat zum Ziel, in der Tabelle die Spalte mit dem Titel "OR AW Ende GJ" zu markieren, anschliessend sollen die darin enthaltenen Werte kopiert und an anderer Stelle "OR AW Beginn GJ" als Werte eingefügt werden. Das Ganze sieht so aus (und hat funktioniert, als ich nur diesen Teil des Codes als separaten Code erfasst hatte und je Tabellenblatt ausgeführt habe):
    Code:
    PS. Evtl. müsste ja vor dem zweiten Range-Befehl auch wieder ein Punkt stehen - aber soweit komme ich ja nicht *wink.gif*

    Nach diesem Teil wird die nächste Spalte der Tabelle angesteuert, Werte kopiert und an anderer Stelle wieder eingeführt, etc. etc.
     
    adrian.dicamillo, 3. Dezember 2020
    #9
  10. Hi, das muss ich mir dann später mal in Ruhe anschauen wird abercerst gegen Abend etwas.
    Vielleicht hat ja jemand anderes vorher Zeit.
     
  11. Hi,
    setze mal vor die Zeile ein Activate:

    Code:
    Anscheinend muss beim Zugriff auf intellgente Tabellen zuerst das Blatt aktiviert werden. Ist mir auch neu, ich habe aber mit den Tabellen via VBA bisher wenig gearbeitet.
     
  12. danke für die Rückmeldung.

    Durch "pröbeln" habe ich mittlerweile eine (ähnliche?) Lösung gefunden, welche bis jetzt gut zu funktionieren scheint:

    Code:
    Auf jeden Fall vielen Dank für euren Support! *top
     
    adrian.dicamillo, 4. Dezember 2020
    #12
  13. Loop / Code soll mehrere Tabellen durchlaufen

    ... das haut aber nur dann hin, wenn die Tabelle exakt den gleichen Namen hat, wie das Tabellenblatt.
     
  14. das ist so.

    die datei ist jedoch so aufgebaut, dass der tabellenblattname jeweils auch dem namen der tabelle entsprechen (sollte)...

    da nur ein, zwei personen zugriff auf die datei haben kann grundsätzlich sichergestellt werden, dass hier nicht eine fehlmanipulation erfolgen (sollte)
     
    adrian.dicamillo, 4. Dezember 2020
    #14
Thema:

Loop / Code soll mehrere Tabellen durchlaufen

Die Seite wird geladen...
  1. Loop / Code soll mehrere Tabellen durchlaufen - Similar Threads - Loop Code Tabellen

  2. Stundenzettel, VBA, MoveNext funktioniert nicht

    in Microsoft Access Hilfe
    Stundenzettel, VBA, MoveNext funktioniert nicht: Hallo, ich habe folgendes Problem und bin um jeden Denkanstoß sehr dankbar! Tabelle tblLOG: Daten einer Stechuhr; Datum, Uhrzeit, Mitarbeiter Tabelle tblKalender: alle Kalendertage bis zum Jahr...
  3. Bestimmte Daten zwischen innerhalb eines Datumsbereichs einer Tabelle Anfügen

    in Microsoft Access Hilfe
    Bestimmte Daten zwischen innerhalb eines Datumsbereichs einer Tabelle Anfügen: Hallo, ich habe per Google und Foren SuFu leider nichts passendes finden können, wage aber zu bezweifeln, dass Access da an seine Grenzen kommt, da es eigentlich recht banal ist. Ich habe eine...
  4. VBA Loop : Werte suchen und löschen

    in Microsoft Excel Hilfe
    VBA Loop : Werte suchen und löschen: Hallo zusammen, ich habe folgende Ausgangslage: Im Tabellenblatt Auswahl sollen Artikel eingegeben werden und via Formel wird der zugehörige Lagerplatz ausgegeben (funktioniert soweit), sodass...
  5. Hilfe! Loop ohne Ende ...

    in Microsoft Excel Hilfe
    Hilfe! Loop ohne Ende ...: Sub FindeProd_Zeilen() Dim c As Range Dim firstAddress As String With Worksheets("Terminverschiebungen").Columns(Spalte_Produktion) Set c =...
  6. Bereiche kopieren/einfügen und mittels Loop "automatisieren"

    in Microsoft Excel Hilfe
    Bereiche kopieren/einfügen und mittels Loop "automatisieren": Hallo liebes MS Office Forum, da ich noch ein VBA Anfänger bin bräuchte ich bitte eure Hilfe *Smilie Zu meinem Problem: Ich möchte im Arbeitsblatt 1 einen definierten Bereich kopieren und in...
  7. Do While Loop Schleife

    in Microsoft Access Hilfe
    Do While Loop Schleife: Hallo zusammen, ich brauche Unterstützung bei der Entwicklung einer Schleife. In Access habe ich eine Datenbank welche Trainingspläne fürs Schwimmen speichert. Nun soll automatisch ein neuer...
  8. Code optimiertung - schleife mit if verknüpfungen (Excel-Makro)

    in Microsoft Excel Hilfe
    Code optimiertung - schleife mit if verknüpfungen (Excel-Makro): Hallo alle zusammen, Ich bräuchte etwas Hilfe, um den Code zu optimieren, zur Zeit läuft das Makro 15 minuten, zum größten Teil dieser Code-Ausschnitt: For i = 1 To 3000...
  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