VBA Datum von bis fortlaufend

lockcat

Erfahrenes Mitglied
Hi,

ich möchte gerne in Zelle A1 und B2 das Start- und Enddatum angeben - er soll mir nun automatisch via VBA die Datum's tage ausgeben?

wie gehe ich am besten vor?
 
Was soll ausgegeben werden. Die Anzahl Tage oder in einer Spalte jeweils pro Tag ein Datumseintrag?
 
Spalte oder Zeile?
Ich gehe mal davon aus, dass du eine Spalte abfülen willst:
Visual Basic:
Public Sub genDates()
    'Definitionen
    Const C_ADR_FROM = "A1"     'Zelle Start Datum
    Const C_ADR_TO = "A2"       'Zelle End Datum
    Const C_COL_TARGET = "B"    'Zielspalte
   
    'Informationen auslesen
    Dim ws As Worksheet:    Set ws = ActiveSheet
    Dim fromDate As Date:   fromDate = ws.Range(C_ADR_FROM).Value
    Dim toDate As Date:     toDate = ws.Range(C_COL_TARGET).Value
   
    'Anzahl Tage bestimmen
    Dim cntDays As Long:    cntDays = DateDiff("d", fromDate, toDate) + 1
   
    'Start Datum übernehmen
    ws.Range(C_COL_TARGET & 1).Value = fromDate
   
    'ZielRange definieren
    Dim target As Range:    Set target = ws.Range(C_COL_TARGET & "1", C_COL_TARGET & cntDays)
   
    'Range mit Datum füllen
    target.DataSeries , xlChronological, xlDay
End Sub
 
Das schaut schon echt gut aus, jedoch bekomme ich ein laufzeitfehler von "1004 anwendungs- oder objektdefinierter fehler" ich bin nun total durcheinander mit voller Daten...
 
Ups, mir ist da noch ein Fehler unterlaufen.
Beim toDate habe ich die falsche Konstante gesetzt

Visual Basic:
    Dim toDate As Date:  toDate = ws.Range(C_ADR_TO).Value
 
Supe Yaslaw bist heut mein Hero :D schaut schon echt gut aus... wäre es auch möglich zu prüfen ob der Tag bzw. Datum ein Samstag ,Sonntag oder Feiertag ist? ferner farblich hervorheben?

Hast du vllt. ein Lösungsansatz?

Gruß
 
Häng einfach noch den folgenden Code am Ende der Methode an und definieren die Formatierung (Farbe etc.)

Visual Basic:
  'Bedingte Formatierung.
  'Formel: =WEEKDAY($B1;2)>=6$
  target.FormatConditions.Delete
  Dim fc As FormatCondition: Set fc = target.FormatConditions.Add(xlExpression, xlCreatorCode, "=WEEKDAY($" & C_COL_TARGET & "1;2)>=6")
   
  fc.Interior.Color = RGB(125, 125, 125)

Feiertage sind schwerer. Dazu müsstest du eine Feiertagsliste erstellen und mit dieser abgleichen.
 
Zuletzt bearbeitet:
Ich hab da doch nochmal ne frage... das mit der Farblichen Darstellung schaut nicht so aus kann ich gleich im Code deklarieren dass er mir diese bestimmten Tage nicht ausgibt?

Gruß
 
Ich sehe grad 2 Möglichkeiten:
1) Schreib den Code um und nimm das target.DataSeries() heraus. Schreibe dselber einen Loop, der auch nach WE prüft

2) Markiere die WE mit einer Farbe so wie jetzt. Filtere danach und lösch die Zeilen. Dass kannst du sogar mit der Macroaufnahme selber erstellen.
 
Zurück