AW: excel vba alle monate zwischen zwei Datumswerten i
16.04.2015 17:26:16
Peter Feustel
Hallo Henning,
hier noch eine Version mit Dokumentation
Gruß Peter
Option Explicit
Public Sub Monat_dazwischen()
Dim iSpalte As Integer ' die zu befüllende Ausgabe-Spalte
Dim dDatum_Strt As Date ' das Start-Datum
Dim dDatum_Ende As Date ' das Ende-Datum
With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen
' prüfen der Eingabe-Werte (Start- und Ende-Datum)
If IsDate(.Range("A1").Value) And IsDate(.Range("B1").Value) Then
If .Range("B1").Value >= .Range("A1").Value Then
.Range("F3:FY3").ClearContents ' den Ergebnis-Bereich großzügig leeren
iSpalte = 6 ' die Start-Spalte festlegen
dDatum_Strt = .Range("A1").Value ' das Start-Datum speichern
dDatum_Ende = .Range("B1").Value ' das Ende-Datum speichern
Do
With .Cells(3, iSpalte)
.NumberFormat = "MMM. YY" ' die Ausgabe-Zelle formatieren
.Value = dDatum_Strt ' des neue Datum eintragen
End With
' den Monat um 1 erhöhen
dDatum_Strt = DateSerial(Year(dDatum_Strt), Month(dDatum_Strt) + 1, Day( _
dDatum_Strt))
iSpalte = iSpalte + 1
' solange in der Schleife bleiben, bis der 1. des Start-Monats > als der 1. des _
Ende-Monats ist
Loop Until DateSerial(Year(dDatum_Strt), Month(dDatum_Strt), 1) > DateSerial(Year( _
dDatum_Ende), Month(dDatum_Ende), 1)
Else
MsgBox "Das Datum in Zelle ""B1"" darf nicht kleiner sein" & vbLf & _
"als das Datum in Zelle ""A1"" - ABBRUCH", _
48, " Hinweis für " & Application.UserName
End If
Else
MsgBox "In Zelle ""A1"" oder in Zelle ""B1"", oder aber in beiden" & vbLf & _
"Zellen ist kein Datum eingetragen worden - ABBRUCH", _
48, " Hinweis für " & Application.UserName
End If
End With
End Sub