Hallo Tim,
Bisschen offtopic
Das ist ganz und gar nicht offtopic!
aber was ändert sich im Makro
Falsche Frage.
Richtig muss das lauten: "Was muss ich* im Makro ändern?"
Mit ich* bist Du gemeint.
wenn ich in den Monatsbättern (Januar-Dezember)
noch ein paar Zeilen einfüge oberhalb einfüge
Tja, jetzt wirds kompliziert, wenn das Zeilen sind die nichts mit der Namensliste zu tun haben.
Damit der gleiche Bezug erhalten bleibt, habe ich in der Tabelle "Administration" ebenfalls 6 Zeilen eingefügt und den Bereich im Makro in der Variable oZelllbereich angepasst.
Beides ist so weit Okay.
Für mein Verständnis ist das Array damit das gleiche wie vorher, d.h. die erste Schleife wird so oder so entsprechend durchlaufen?
Wenn der Zellbereich beispielsweise von B3:B9 auf B9:B15 geändert wird, ist das Array wohl gleich groß. Doch das ist längst noch nicht alles.
Das Makro arbeitet (fast) richtig, jedoch wird bei einem Testlauf nicht der richtige Bereich gelöscht.
Das ist ja auch richtig so, das mit den paar winzig kleinen Änderungen ein falscher Bereich gelöscht wird. Denn ein wenig mehr Verständnis über die Programmierung gehört schon dazu.
Da ja schon in deiner letzten Beispieldatei eine Zeilendifferenz mit der Namensliste im Tabellenblatt *Administration* und den einzelnen Monatsblättern existierte, musste ich diese Differenz irgendwie ausgleichen.
Schauen wir uns noch mal den Zellbereich der Namenslisten etwas genauer an.
Im Blatt *Administration* war er von A3 bis A8.
Im Monatsblatt ging er aber von A2 bis A7.
Wie unschwer zu erkennen, ist da 1 (in Worten: Eine) Zeile unterscheid vorhanden. Und diese eine Zeile differenz muss ausgeglichen werden, damit auch die richtige Zeile glöscht wird. Findet kein ausgleich statt, dann wird in den Monatsblättern z.B. nicht der Inhalt der Zeile 4 gelöscht, sondern der der Zeile 3.
Und diesen ausgleich habe ich mit
iTempZeile +1 in der folgenden Codezeile geregelt.
Code: Alles auswählen
ThisComponent.Sheets(i).getCellRangeByPosition(iTagesSpalte, iTempZeile +1, 31, iTempZeile +1).clearContents(12)
Und auch in dieser Codezeile.
Code: Alles auswählen
ThisComponent.Sheets(i).getCellRangeByPosition(1, iTempZeile +1, 31, iTempZeile +1).clearContents(12)
Um jetzt die geänderte Startadresse, alt war ja A3 und aktuell ist sie bei dir A9, anzupassen, muss der Zähler für iTempZeile um genau die verschobenen Zeilen erhöht werden. Also musst Du in den beiden gezeigten Codezeilen den Zähler erhöhen, und zwar auf
iTempZeile +7.
Damit müsste dein Problem gelöst sein, und es wird die richtige Zeile gelöscht.
Wenn Du anschließend den Bereich aber vergrößern willst, dann brauchst Du nur noch den Zellbereich in der Variablen
oZelllbereich dementsprechend anzupassen, mehr nicht.
Gruß
balu