Hey Holger,
funktioniert einwandfrei:) Nochmals vielen Dank für deine Hilfe.
Gruß
Matze
Holger schrieb am 27.08.2009 17:59:15:
Hallo matzke89,
das tut es doch. Voraussetzung ist, dass du wirklich eine Zeile eingefügt hast, di du beschreibst, und hierfür nicht die leere Zeile zwischen zwei Blöcken genutzt hast. Also erst Zeile einfügen, dann schreiben und Markierung in der Zeile lassen, dann Makro anwenden.
Gruß
Holger
matzek89 schrieb am 27.08.2009 12:55:38:
Hallo Holger,
erstmal vielen Dank für deine Hilfe.
Das Makro funktioniert soweit echt super. Nur gibt es leider noch eine Sache, die geändert werden müsste. Habe es schon selber versucht zu ändern, hat aber irgendwie nicht funktioniert. (Ist nur Schmarn dabei rausgekommen)
Da ich mit meinem Makro, welches ich in meinem ersten Beitrag aufgezeigt habe, meine Tabelle immer um eine Zeile nach unten erweitere, müsste die neue Zeile auch unten eingefügt werden.
Sprich wenn meine Tabelle 20 Zeilen hat (inklusive Überschrift), wird durch mein Makro eine 21ste Zeile eingefügt (unter der 20sten). In die 21ste Zeile trage ich nun das Datum usw. ein, wie bereits im ersten Beitrag beschrieben.
Wenn ich jetzt in der neu eingefügten Zeile stehe (21ste), dann müsste das datum quasi bei der nächsten Tabelle auch in die unterste (neue) Zeile eingefügt werden.
Kann man das Makro, dass du geschrieben hast, eventuell den Umständen entsprechend anpassen?
Gruß
Holger schrieb am 27.08.2009 10:43:35:
Hallo matzek89,
ich gehe davon aus, dass du das Einfügen von Zeilen immer im ersten Block (01.01.) durchführst und zwischen den Blocks eine Leerzeile ist. Die Überschriften stehen in jedem Block. Wenn du die Markierung in der eingefügten Zeile stehen lässt, kopiert nachstehendes Makro diese Zeile in die übrigen 364 Blöcke und setzt das Datum jeweils um 1 hinauf.
a = MsgBox("Steht aktive Zelle im zu kopierer Zeile?", vbYesNo + vbQuestion)
If a <> vbYes Then Exit Sub
a = ActiveCell.End(xlUp).Row 'erste Zeile im Block mit aktiver Zelle
If a <> 1 Then MsgBox "Die Markierung steht nicht im ersten Block!", vbExclamation: Exit Sub
z = ActiveCell.End(xlDown).Row 'letzte Zeile im Block
Blocklänge = z - a + 1
r = ActiveCell.Row - a + 1 'relative Zeilennummer im bearbeiteten Block
For i = 1 To 364
Rows(ActiveCell.Row).Copy
Rows(r + (z + 1) * i).Insert Shift:=xlDown
Cells(r + (z + 1) * i, 1) = Cells(r + (z + 1) * i, 1) + i
Next i
Gruß
Holger
matzek89 schrieb am 26.08.2009 13:11:51:
Hallo zusammen,
habe derzeit ein mehr oder weniger kleines Problem mit ein paar Tabellen in Excel und brauche hierbei unbedingt Hilfe.
Ich habe in einem Tabellenblatt 365 Tabellen untereinnander erstellt. Dies sieht in etwa so aus:
A B C D E
Datum Text Text Text Text
01.01.
01.01.
01.01
01.01.
Datum Text Text Text Text
02.01.
02.01.
02.01.
02.01.
Das Datum erhöht sich in jeder Tabelle um einen Tag.
Da ich die Tabellen öfters um eine Zeile nach unten erweitern muss, habe ich mir schon ein Makro zusammen gesucht, dass so aussieht:
For i = 1 to 5000 step 5
Rows(i).Select
Selection.Insert Shift:=xlDown
i = i+1
(Den "step" ändere ich je nachdem wie ich ihn brauche ab)
Wenn ich durch das Makro oben nun jeweils eine Leerzeile mehr habe, trage ich die neuen Daten in diese ein. Das mache ich aber nur in der ersten Leerzeile. Sprich ich erweitere die erste Tabelle mit beispielsweise "01.01.2009" und Trage bei den Spalten "Text" jeweils eine beliebige Zahl ein.
Jetzt bräuchte ich ein Makro, welches es mir ermöglicht die neu eingetragene Zeile in die anderen neuen Leerzeilen zu kopieren. Hierbei muss aber das Datum (wie in meinem Tabellen Beispiel oben aufgezeigt) immer um einen Tag erweitert werden und dass nur (wie im Makro Beispiel) alle 5 Zeilen. Das erweitern trifft jedoch nur auf das Datum zu, sprich auf Spalte A. Der Rest sollte Kopiert werden.
Ist das irgendwie möglich? Wäre echt klasse wenn mir da jemand helfen könnte, da es sonst immer ein RIEßEN Aufwand ist, diese Tabellen zu erweitern.
Danke im Voraus. |