2k Aufrufe
Gefragt in Tabellenkalkulation von tomasd Einsteiger_in (53 Punkte)
Hallo,
ich habe jeden Monat ein Tabellenblatt, wo in der Spalte B beginnend mit B6 aller 96 Zeilen das Tagesdatum steht. Die Spalten C bis R sind vollständig mit Werten ausgefüllt. Mein Makro soll nun die Tagesdaten in Spalte B jeweils 95 mal nach unten kopieren. Also B6 kopieren bis B101, B102 kopieren bis B197, B198 kopieren bis B293 usw. Mit Makrorecorder aufzeichnen bringt mich nicht weiter, da manche Monate 28,29,30 bzw 31 Tage haben. Hat jemand eine Idee wie ich das mit VBA machen kann ?
Freundliche Grüße
tomasd

6 Antworten

0 Punkte
Beantwortet von marie Experte (2k Punkte)
Hallo,

ich denke mal das wäre absolut kein Problem, wenn ich denn mal verstanden hätte was Du meinst.
die Tagesdaten in Spalte B jeweils 95 mal nach unten kopieren. Also B6 kopieren bis B101, B102 kopieren bis B197, B198 kopieren bis B293 usw.


Mit Makrorecorder aufzeichnen bringt mich nicht weiter, da manche Monate 28,29,30 bzw 31 Tage haben.


???

Erklär das einfach mal genauer was in der Spalte B steht und/oder was wohin kopiert werden muss. Woher weiß ich das Tagesdatum? Wo steht es schon und wo muee es hin und was hat das mit der Anzahl der tage im Monat zu tun?

gruß marie
0 Punkte
Beantwortet von tomasd Einsteiger_in (53 Punkte)
Hallo Marie,

jedes Tabellenblatt enthält die Werte des jeweiligen Monats. In Spalte B steht das Datum, Spalten C bis E die Uhrzeiten und in Spalten G bis R die Zahlenwerte. Da ein Tag 96 Viertelstunden hat, steht das Datum in Spalte B nur einmal wenn ein neuer Tag beginnt, also nach 96 Viertelstunden/ Zeilen.
Bsp. B6=2010-08-01; C6=00:00 Uhr; D6=bis; E6=00:15 Uhr
B7= leer; C7=00:15 Uhr; D7=bis; E7=00:30 Uhr
die nächste Datumsangabe folgt erst in Zelle B102=2010-08-02. Ich möchte aber vor jeder Uhrzeit das Datum stehen haben.
Da aber nicht jeder Monat die gleiche Anzahl Tage hat, komme ich mit Aufzeichnen nicht weiter.
Freundliche Grüße
thomasd
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

versuch es mal mit dem Makro

Sub Makro1()
'
' Makro1 Makro
' Makro am 30.08.2010 von bauer aufgezeichnet

letzter_tag = DateSerial(Year(Range("B6").Value), Month(Range("B6").Value) + 1, 0)
tage = Day(letzter_tag)
For i = 1 To tage
Range("B" & i * 96 - 90).Value = DateSerial(Year(Range("B6").Value), Month(Range("B6").Value), i)
Range("B" & i * 96 - 90).Select
Selection.Copy
Range("B" & i * 96 - 90 & ": B" & i * 96 + 5).Select
ActiveSheet.Paste
'ActiveWindow.SmallScroll Down:=72
Next i
End Sub


in B6 ist der 1 des Monats einzutragen also z.B. 1.8.2010 oder 1.2.2011, Rest erledigt das Makro nach Start

Gruß

Helmut
0 Punkte
Beantwortet von tomasd Einsteiger_in (53 Punkte)
Hallo Helmut,
vielen Dank für deine Antwort. Klappt aber leider nicht wie gedacht. Das Makro kopiert das Datum aus B6 nach B96 bis B101 und dann nach B192 bis B198 usw. Es ersetzt auch alle Tagesdaten mit dem Datum aus B6 damit.
Freundliche Grüße
Thomas
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
hallo,

habe das Modul nochmal bei mir getestet und es funktioniert ohne Probleme.

Kopiere main Modul mal in deine Datei, ich vermute im Moment einen Tippfehler. Meine Vermutung wird durch deine Anagbe

Das Makro kopiert das Datum aus B6 nach B96 bis B101 und dann nach B192 bis B198 usw. Es ersetzt auch alle Tagesdaten mit dem Datum aus B6 damit.


Gruß

Helmut
0 Punkte
Beantwortet von tomasd Einsteiger_in (53 Punkte)
Hallo,
deine Vermutung stimmte. Es funktioniert einwandfrei ! Nochmals vielen Dank, das hat mir sehr geholfen. Ich wünsche dir noch einen schönen Tag.
Gruß
Thomas
...