Hi Stefan,
- das der Name eines Tabellenblattes sich aus dem inhalt von
zwei Zellen zusammen setzt Name = A1 & „-“ & A2
Moglich ist vieleicht auch die Änderung des Arbeitsblattes in
(10-2006)
und er übernimmt in Zelle A1 die 10 und in Zelle A2 die 2006
- die Übernahme der Überstunden und des Resturlaubes aus der
davor exestierenden Seite
Zelle C30 = ‚(A1-1) & „-“ & A2‘!E30 nur das geht leider so
nicht
ich persönlich würde die Datei „Plaanung2006“ o.ä. nennen und die Blätter Januar, Februar usw, und fertig, also für 2007 neue Datei, ggfs noch ein Blatt „Jahresplanung“ dazu.
Dazu noch eine Datei „Gesamtplanung“
Aber das nur mal so.
Im Beispiel stehen pro Blatt die Überstunden des Monats in D30, der Resturlaub in D31. Überträge aus dem Vormonat stehen in E30:E31, dies musst du im unteren Code abändern.
Der untere Code läuft völlig automatisch ab und reagiert auf Änderungen in der „überwachten“ Spalte 7 (G). Dies musst du auf eine Spalte abändern wo durch manuelle Änderung eines Zellwertes oder durch reinkopieren eine Änderung stattfindet die dann die Werte in D30:smiley:31 indirekt via einer Formel in D30:smiley:31 aktualisiert.
(Änderungen eines Formelergebnisses kann man nicht per Vba direkt überwachen, deshalb dieser Umweg.
Wenn also in E30 steht
=G27-I27
dann mußt du wie im Beispiel Spate 7(=G) und Spalte 9(=I) im unteren Code eintragen in der oberen If-Abfrage.
keine Sorge ist alles Kinderleicht und du musst alles nur einmalig machen pro Jahr.
Drücke Alt+F11, wenn links in der Lste nicht "modul1 steht, dann Einfügen–Modul, Code reinkopieren.
Option Explicit
Sub NurEinmaligProJahrLaufenLassen()
Dim n As Byte, ws As Worksheet, vorh As Boolean, Jahr As String
Jahr = "2006"
For n = 1 To 12
For Each ws In ThisWorkbook.Worksheets
If ws.Name = n & "-" & Jahr Then
vorh = True
Exit For
End If
If vorh True Then
Worksheets.Add
ActiveSheet.Name = n & "-" & Jahr
End If
Next ws
Next n
End Sub
Dann nacheinander immer links Doppelklick auf „1-2006“, „2-2006“,…,„12-2006“
Überall dann diesen Code reinkopieren, beim ersten Mal die Spalten anpassen und dann diesen geändeerten Code in die anderen Blätter reinkopieren.
Anschliessend Editor schliessen.
Durch Extras–Makro–makro das Makro „NurEinmaligProJahrLaufenLassen“ ausführen lassen.
Fertig.
Option Explicit
Private Sub Worksheet\_Change(ByVal Target As Range)
If Target.Column 7 And Target.Column 9 Then Exit Sub 'A=1,B=2,...,G=7
Dim n As Byte
For n = CInt(Left(ActiveSheet.Name, InStr(ActiveSheet.Name, "-") - 1)) To 11
Worksheets(n + 1 & "-2006").Range("E30") = Worksheets(n & "-2006").Range("D30") 'Überstunden
Worksheets(n + 1 & "-2006").Range("E31") = Worksheets(n & "-2006").Range("D31") 'resrturlaub
Next n
End Sub
Gruß
Reinhard