1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

VBA Datum von bis fortlaufend

Dieses Thema im Forum "Office-Anwendungen" wurde erstellt von lockcat, 23. Februar 2016.

  1. lockcat

    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?
     
  2. Yaslaw

    Yaslaw n/a Moderator

    Was soll ausgegeben werden. Die Anzahl Tage oder in einer Spalte jeweils pro Tag ein Datumseintrag?
     
  3. lockcat

    lockcat Erfahrenes Mitglied

    Er soll ein Datumseintrag je spalte pro tag eintragen - damit daneben später Notizen notiert werden können.
     
  4. Yaslaw

    Yaslaw n/a Moderator

    Spalte oder Zeile?
    Ich gehe mal davon aus, dass du eine Spalte abfülen willst:
    Code (Visual Basic):
    1. Public Sub genDates()
    2.     'Definitionen
    3.    Const C_ADR_FROM = "A1"     'Zelle Start Datum
    4.    Const C_ADR_TO = "A2"       'Zelle End Datum
    5.    Const C_COL_TARGET = "B"    'Zielspalte
    6.  
    7.     'Informationen auslesen
    8.    Dim ws As Worksheet:    Set ws = ActiveSheet
    9.     Dim fromDate As Date:   fromDate = ws.Range(C_ADR_FROM).Value
    10.     Dim toDate As Date:     toDate = ws.Range(C_COL_TARGET).Value
    11.    
    12.     'Anzahl Tage bestimmen
    13.    Dim cntDays As Long:    cntDays = DateDiff("d", fromDate, toDate) + 1
    14.    
    15.     'Start Datum übernehmen
    16.    ws.Range(C_COL_TARGET & 1).Value = fromDate
    17.    
    18.     'ZielRange definieren
    19.    Dim target As Range:    Set target = ws.Range(C_COL_TARGET & "1", C_COL_TARGET & cntDays)
    20.    
    21.     'Range mit Datum füllen
    22.    target.DataSeries , xlChronological, xlDay
    23. End Sub
     
    Sharki77 und lockcat gefällt das.
  5. lockcat

    lockcat Erfahrenes Mitglied

    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...
     
  6. Yaslaw

    Yaslaw n/a Moderator

    Ups, mir ist da noch ein Fehler unterlaufen.
    Beim toDate habe ich die falsche Konstante gesetzt

    Code (Visual Basic):
    1.     Dim toDate As Date:  toDate = ws.Range(C_ADR_TO).Value
     
  7. lockcat

    lockcat Erfahrenes Mitglied

    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ß
     
  8. Yaslaw

    Yaslaw n/a Moderator

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

    Code (Visual Basic):
    1.   'Bedingte Formatierung.
    2.  'Formel: =WEEKDAY($B1;2)>=6$
    3.  target.FormatConditions.Delete
    4.   Dim fc As FormatCondition: Set fc = target.FormatConditions.Add(xlExpression, xlCreatorCode, "=WEEKDAY($" & C_COL_TARGET & "1;2)>=6")
    5.    
    6.   fc.Interior.Color = RGB(125, 125, 125)
    Feiertage sind schwerer. Dazu müsstest du eine Feiertagsliste erstellen und mit dieser abgleichen.
     
    Zuletzt bearbeitet: 23. Februar 2016
    lockcat gefällt das.
  9. lockcat

    lockcat Erfahrenes Mitglied

    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ß
     
  10. Yaslaw

    Yaslaw n/a Moderator

    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.
     
  11. lockcat

    lockcat Erfahrenes Mitglied

    Ich glaube, ich lasse es VBA ist einfach nicht meine welt.... Aber Danke für deine Hilfe...
     
  12. Sharki77

    Sharki77 Grünschnabel

    @Yaslaw
    Funzt prima, wäre es ggf. möglich die Funktion zu erweitern bzw. die Konstante durch eine Variable zu ersetzen?
     
  13. Yaslaw

    Yaslaw n/a Moderator

    Ja. Man kann immer erweitern und Konstanten durch Variablen ersetzen und umgekehrt.
     
  14. Sharki77

    Sharki77 Grünschnabel

    hmmm. ich habs versucht, allerdings kam es immer zu einem Fehler. Ich probier mal weiter :)
     
  15. Yaslaw

    Yaslaw n/a Moderator

    Ich würde dir ja schon helfen. Aber dazu fehlen mir ganz viele Infos.
     
  16. Sharki77

    Sharki77 Grünschnabel

    oh oK :)
    also ich habe eine Liste in der Mittels Formular Beginn und Ende vom Urlaub eingetragen wird. in eine andere Spalte wird dann untereinander die Daten eingetragen da diese in eine Andere Liste dann automatisch eingetragen werden. also sollte in der Spalte geguckt werden ist was drin dann nächste freie Zeile und so weiter
    hoffe man kann das so verstehen ... PS bin leihe. also bitte kein hochdeutsch oder ne andere Fremdsprache...
     

    Anhänge:

  17. Yaslaw

    Yaslaw n/a Moderator

    Und wie sehen deine VBA-Versuche aus? Das ist ein xlsx. Es enthält also kein VBA. Ansonsten wäre es eine xlsm Datei.

    Wo ist das Formular von dem du schreibst?

    Und kannst du die Felder erklären? Was ist das für eine Datumsliste in der Spalte L?

    Hä?

    Was soll wo gekuckt werden?

    Sorry, mit diesen Angaben kann ich nicht arbeiten.
     
  18. Sharki77

    Sharki77 Grünschnabel

    kann die Datei hier nicht hochladen. der sagt und zeigt mir immer einen Fehler an wegen der Makros :( wie kann ich die sonst hier reinstellen?
     
  19. Yaslaw

    Yaslaw n/a Moderator

    Zippen und dan hochladen?
     
  20. Sharki77

    Sharki77 Grünschnabel

    man du hast ja mal Ideen :)
    hätte ich nicht dran gedacht
     

    Anhänge:

Die Seite wird geladen...