Hallo liebe Gemeinde,
vielleicht könnt Ihr mir bei der Fehlersuche helfen. Tabelle ist im Anhang.
Eigentlich soll diese Tabelle ganz simpel Daten sortieren. Auf dem Worksheet "PZ_Erfassung" in der Tabelle "Data_Input" werden Projekteinsatzzeiten erfasst und dem jeweiligen Projekt zugeordnet. Das passiert hintereinander für das ganze Jahr. Da ich eine monatliche Meldung abgeben muss, möchte ich automatisch auf 12 Worksheets (Januar-Dezember) die Daten aus "Data_Input" nach Monaten aufgeteilt in die jeweiligen Tabellen (T_Januar, T_Februar usw), welche sich auf den Sheets mit Monatsnamen befinden, umsortieren.
Habt Ihr eine Idee? Vielen Dank schon einmal...
Projektaufwände_VS_2_1_Forum.xlsm (Größe: 174,19 KB / Downloads: 9)
Beim Debuggen stoße ich immer auf diese Zeile, welche anscheinend nicht funktioniert:
Hier der gesamte VBA-Code:
vielleicht könnt Ihr mir bei der Fehlersuche helfen. Tabelle ist im Anhang.
Eigentlich soll diese Tabelle ganz simpel Daten sortieren. Auf dem Worksheet "PZ_Erfassung" in der Tabelle "Data_Input" werden Projekteinsatzzeiten erfasst und dem jeweiligen Projekt zugeordnet. Das passiert hintereinander für das ganze Jahr. Da ich eine monatliche Meldung abgeben muss, möchte ich automatisch auf 12 Worksheets (Januar-Dezember) die Daten aus "Data_Input" nach Monaten aufgeteilt in die jeweiligen Tabellen (T_Januar, T_Februar usw), welche sich auf den Sheets mit Monatsnamen befinden, umsortieren.
Habt Ihr eine Idee? Vielen Dank schon einmal...

Beim Debuggen stoße ich immer auf diese Zeile, welche anscheinend nicht funktioniert:
Code:
Set wsZiel = ThisWorkbook.ListObjects("T_" & monat)
Hier der gesamte VBA-Code:
Code:
Option Explicit
Sub DatenAufteilen()
Dim wsQuelle As ListObject
Dim wsZiel As ListObject
Dim letzteZeileQuelle As Long
Dim letzteZeileZiel As Long
Dim monat As String
Dim i As Long
Dim userResponse As VbMsgBoxResult
' Setze die Quelltabelle (ListObject)
Set wsQuelle = ThisWorkbook.Sheets("PZ_Erfassung").ListObjects("Data_Input")
' Finde die letzte Zeile in der Quelltabelle
letzteZeileQuelle = wsQuelle.ListRows.Count
' Durchlaufe die Quelltabelle ab Zeile 1 (Annahme, dass die Daten in der ersten Zeile beginnen)
For i = 2 To letzteZeileQuelle
' Ermittle den Monat aus dem Datum in Spalte A
monat = Format(wsQuelle.ListColumns("Datum").DataBodyRange.Cells(i, 1), "mmmm")
' Versuche, die Zieltabelle auf dem entsprechenden Arbeitsblatt zu finden
On Error Resume Next
Set wsZiel = ThisWorkbook.ListObjects("T_" & monat)
On Error GoTo 0
' Überprüfe, ob die Zieltabelle gefunden wurde
If Not wsZiel Is Nothing Then
' Finde die letzte Zeile in der Zieltabelle
letzteZeileZiel = wsZiel.ListRows.Count + 1
' Kopiere die Daten von der Quelltabelle zur Zieltabelle
wsQuelle.ListRows(i).Range.Copy wsZiel.ListRows.Add.Range
Else
' Frage den Benutzer nach Aktion (OK für Weiter, Abbrechen zum Beenden)
userResponse = MsgBox("Tabelle für " & monat & " nicht gefunden!", vbExclamation + vbOKCancel, "Fehler")
' Überprüfe die Benutzerantwort
If userResponse = vbCancel Then Exit For
End If
Next i
End Sub