Ich habe eine Tabelle mit unterschiedlichen Daten. In der Spalte I sind Datumsangaben. Ich möchte dass mir der Macro alle Zeilen löscht ausser mit Datum von letzten Jahr und die übrigen Zeilen Monat für Monat in einen extra Worksheet kopiert werden. So dass z.B. im Worksheet "Januar" nur Daten von Januar sind, im Worksheet "Februar" nur Daten mit Datum von Februar in Spalte I usw. bis alle MOnate verteilt sind.
Ich habe es selber schon versucht. Ich krieg es hin dass 12 worksheets erstellt und richtig benannt werden, aber mit dem Filder und kopieren klappt es noch nicht. Auf jeden Fall muss ich die Variable "dtMonat" richtig definieren, dann könnte es gehen. Ich weiss aber noch nicht wie ich das am besten mache. Wäre toll wenn mir jemand mir da helfen könnte.
So jetzt de Macro:
Private Sub But_letzter_Jahr_Monat_Click()
Dim wksE As Excel.Worksheet
Dim i As Integer
Dim dtJahr As Integer
Dim dtMonat As Integer
Dim r As Byte
Dim c As Byte
Dim j As Integer
Dim wb As Excel.Workbook
Application.ScreenUpdating = False
Set wksE = ThisWorkbook.Worksheets("excel")
dtJahr = Format(Now, "yyyy") - 1
dtMonat = 0
Dim m(11) As String
m(0) = "Januar"
m(1) = "Februar"
m(2) = "März"
m(3) = "April"
m(4) = "Mai"
m(5) = "Juni"
m(6) = "Juli"
m(7) = "August"
m(8) = "September"
m(9) = "Oktober"
m(10) = "November"
m(11) = "Dezember"
Set wb = ThisWorkbook
For j = 0 To UBound(m())
Worksheets.Add After:=Worksheets(Worksheets.Count)
ThisWorkbook.ActiveSheet.Name = m(j)
Next j
'PROBLEM: dtMonat FESTLEGEN/wann welcher monat
With wksE
.Activate
For i = 1 To ActiveSheet.UsedRange.Rows.Count
If Month(wksE.Cells(i, 9)) <> dtMonat Or Year(wksE.Cells(i, 9)) <> dtJahr Then
.Activate
.Range(Cells(i, 1), Cells(i, 9)).Copy wb.Sheets(m(Month(.Cells(i, 9)) - 1)).Cells(i, 1)
End If
Next
End With
Set wksE = Nothing
Application.ScreenUpdating = True
End Sub
mit freundlichen Grüssen
Waldemar