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