Datenübernahme aus anderem Datenblatt in Excel

Hallo an alle!

Ich habe folgendes Problem:

In einem Arbeitsblatt (09-2006) werden meine Arbeitzzeiten und Urlaub etc. Eingetragen und auch ohne Probleme Berechnet
nun fängt ein neuer Monat an und ich erstelle ein neues Datenblatt mit dem Namen (10-2006)
Nun möchte ich

  1. 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

  2. die Übernahme der Überstunden und des Resturlaubes aus der davor exestierenden Seite
    Zelle C30 = ‚(A1-1) & „-“ & A2‘!E30 nur das geht leider so nicht

vieleicht konnt ihr mir ja weiter helfen?

Cu Stefan

Hi Stefan,

  1. 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
  2. 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