Meine Zählerstände für Strom und Wasserverbrauch trage ich auch monatlich oben ein. Unten eintragen und dann sortieren würde nicht funktionieren, da ich ja auch die Differenzen zum Vormonat (nächste Zeile) ermittle. Das ginge wohl auch mit Index/Vergleich, aber das mache isch schon seite Ende 1996, da kannte ich diese Möglichkeit noch nicht.
Um die Formeln und bedingten Formatierungen in die neue Zeile zu bekommen starte ich beim öffnen der Mappe, ein Makro, welches das Ganze erledigt.
Code:
Private Sub Workbook_Open()
Call auto_öffnen
End Sub
Sub auto_öffnen()
Call Vorbereitung_neuer_Monat_Strom
Call Vorbereitung_neuer_Monat_Wasser
End Sub
Option Explicit
Sub Vorbereitung_neuer_Monat_Strom()
If Sheets("Strom").Range("A2") = "" Or _
Month(Now()) = Month(Sheets("Strom").Range("A2")) Then
Exit Sub
End If
Application.ScreenUpdating = False
With Sheets("Strom")
.Rows("2:2").Insert shift:=xlDown
.Range("E3:T3").Copy
.Range("E2").PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
.Rows("3:3").Copy
.Rows("2:2").PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End With
Application.ScreenUpdating = True
End Sub
Sub Vorbereitung_neuer_Monat_Wasser()
If Sheets("Wasser").Range("A2") = "" Or _
Month(Now()) = Month(Sheets("Wasser").Range("A2")) Then
Exit Sub
End If
Application.ScreenUpdating = False
With Sheets("Wasser")
.Rows("2:2").Insert shift:=xlDown
.Range("C3:L3").Copy
.Range("C2").PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
.Rows("3:3").Copy
.Rows("2:2").PasteSpecial Paste:=xlPasteFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
End With
Application.ScreenUpdating = True
End Sub
Damit auch die bedingten Formatierungen das Einfügen der oberen Zeile berücksichtigen, sind diese für die betreffenden Spalten definiert. In den Formeln der bF wird dies dann berücksichtigt wie z.B mit:
Zitat:=UND(ISTZAHL(INDEX($T:$T;ZEILE()));INDEX($T:$T;ZEILE())>INDEX($T:$T;ZEILE()+1))
um den Jahreswechsel hervorzuheben. Spalte "T" enthält das Jahr.
Bei funktioniert dies problemlos mit den formatrierten Tabellen, auf die ich allerdings erst viel später umgestellt habe. Auch das Makro habe ich dazu dann angepasst.