AW: Tag aus Datum zuordnen
21.05.2014 18:24:49
Hagen
Hallo Tim,
Ja du hast da einen kleinen Fehler gemacht, und zwar musst du natürlich auch die For-Schleife verdoppeln, die ist ja für das auffüllen dazwischen zuständig. So füllst du nur für den zweiten Zeitraum auf. Ja mir ist auch aufgefalllen, dass natürlich die For-Schleife immer eins zu weit läuft, also kommt da einfach immer - 1 dahinter dann funktioniert das. Zum Thema nächste Monat anstatt aktuellem, da muss natürlich in das Datum einmal + 1. Sieht dann so aus, auch gleich mit zweites datum wird in nächster Spalte eingesetzt (Spalte D). Vergiss nicht dass hier viele Informationen direkt ins Makro programmiert wurden heißt das Ganze ist etwas statisch und bei kleinen Änderungen im Blatt kann das Ding schon abstürzen. Geh das Programm mal schrittweise durch und mach dir klar, was es eigentlich macht dann kannst du Fehler vermeiden mit F8-Taste kannst du schrittweise das Programm rechnen lassen.
Private Sub CommandButton1_Click()
Dim Start As Date
Dim Ende As Date
Dim Monat As Long
Dim i As Long
Start = Me.Range("A2").Value
Ende = Me.Range("B2").Value
Select Case Year(Start)
Case "2013"
Me.Range("C" & 14 + Month(Start)) = Day(Start)
Case "2014"
Me.Range("C" & 32 + Month(Start)) = Day(Start)
End Select
Select Case Year(Ende)
Case "2013"
Me.Range("C" & 14 + Month(Ende)) = Day(Ende)
Case "2014"
Me.Range("C" & 32 + Month(Ende)) = Day(Ende)
End Select
For i = 1 To DateDiff("m", Start, Ende) - 1
If Month(Start) + i > 12 Then
Me.Range("C" & 32 + Month(Start) + i - 12) = _
Me.Range("B" & 32 + Month(Start) + i - 12)
Else
Me.Range("C" & 14 + Month(Start) + i) = Me.Range("B" & 14 + Month(Start) + i)
End If
Next i
Start = Me.Range("A4").Value
Ende = Me.Range("B4").Value
Select Case Year(Start)
Case "2013"
Me.Range("D" & 14 + Month(Start)) = Day(Start)
Case "2014"
Me.Range("D" & 32 + Month(Start)) = Day(Start)
End Select
Select Case Year(Ende)
Case "2013"
Me.Range("D" & 14 + Month(Ende)) = Day(Ende)
Case "2014"
Me.Range("D" & 32 + Month(Ende)) = Day(Ende)
End Select
For i = 1 To DateDiff("m", Start, Ende) - 1
If Month(Start) + i > 12 Then
Me.Range("D" & 32 + Month(Start) + i - 12) = _
Me.Range("B" & 32 + Month(Start) + i - 12)
Else
Me.Range("D" & 14 + Month(Start) + i) = Me.Range("B" & 14 + Month(Start) + i)
End If
Next i
Dim Datum As Date
Dim VarDatum As Date
Datum = WorksheetFunction.Max _
(Me.Range("A2").Value, Me.Range("B2").Value, _
Me.Range("A4").Value, Me.Range("B4").Value)
Datum = "01." & Month(Datum) + 1 & "." & Year(Datum)
Me.Range("A8").Value = Datum
VarDatum = "30.06." & Year(Datum)
If Datum
Gruß Hagen
P.S.: Dir diese Nachricht zu schrieben, hat länger gedauert als den Code zu korrigieren, also mach dir da mal keine Sorgen.
P.P.S.: 10 Minuten Programmiern bedeuten 50 Minuten Fehlersuche (übertrieben gesagt)