• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

automatisch datumreeks

  • Onderwerp starter Onderwerp starter nak
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

nak

Gebruiker
Lid geworden
18 feb 2007
Berichten
85
Ik ben bezig een rooster te maken waarbij ik bij elk nieuw jaar data moet aanpassen, wat nogal veel typwerk is.
Het gaat om bepaalde diensten die van ma t/m do en do t/m zo lopen.

als voorbeeld neem ik even deze week, dan komt er zoiets te staan als:
10/10 t/m 13/10 | pietje
14/10 t/m 16/10 | klaasje
17/10 t/m 20/10 | jantje

Nou zou het heel veel typwerk schelen als ik die data als een reeks kan doorvoeren.
Helaas lukt dat niet want als ik de laatste 17/10 t/m 20/10 wil doorvoeren dan krijg ik 17/10 t/m 21/10, terwijl ik nou juist 21/10 t/m 23/10 wil hebben.

Is het mogelijk om zoiets te maken? en zijn er misschien ook mogelijkheden om de kalender te gebruiken.
Dat ik b.v een datum ergens typ in een cel automatisch de dag in de cel ernaast komt?
 
Volgens mij, als je 2 velden onder elkaar invult, deze 2 selecteert en dan de cursor naar beneden sleept, maakt hij zelf
de reeksen verder aan zoals je ze gedefinieerd hebt.
 
Een XLS vbtje helpt vaak enorm.
 
Met VBA zou dit een mogelijkheid kunnen zijn...
Code:
Sub ReeksDoorvoeren()

    c0 = Application.InputBox("Geef de eerste datum... (precies zo als het voorbeeld)", "Start", Format(Date, "dd/mm/yyyy"))
    
    For i = 1 To Selection.Cells.Count
        c1 = c1 & Format(DateValue(c0) + (((i - 1) * 3) + IIf(i = 1, 0, 1)), "dd/mm") & " t/m " & Format(DateValue(c0) + (i * 3), "dd/mm") & "|"
    Next i
    
    Selection = WorksheetFunction.Transpose(Split(c1, "|"))
    
End Sub
Selecteer het bereik waarin je die reeksen wil zien en laat de code 'ns lopen...

Groet, Leo
 
...overigens heb ik je voorbeeld nu héél precies nagebouwd. Dit heeft dus wél een fout in zich. Je eerste regel heeft namelijk 4 dagen en de rest slechts 3... :eek:

Groet, Leo
 
Ja dat klopt, dat is dus de moeilijkheid.
een week heeft 7 dagen welke in 2 delen moet.
 
Dan zo maar...
Code:
Sub ReeksDoorvoeren()

    c0 = Application.InputBox("Geef de eerste datum... (precies zo als het voorbeeld)", "Start", Format(Date, "dd/mm/yyyy"))
    
    For i = 1 To Selection.Cells.Count
        c1 = DateValue(c0) + IIf((i Mod 2 = 0), 2, 3)
        c3 = c3 & Format(DateValue(c0), "dd/mm") & " t/m " & Format(DateValue(c1), "dd/mm") & "|"
        c0 = DateValue(c1) + 1
    Next i
    
    Selection = WorksheetFunction.Transpose(Split(c3, "|"))
    
End Sub
Nu wordt de reeks om en om met respectievelijk 4 of 3 dagen verhoogd.

Groet, Leo
 
Leo, hartelijk dank
Je wilt niet weten hoeveel typwerk het scheelt.
Er zijn nog enkele roosters die weer wat anders werken maar daar kom ik nu wel achter hoe dat moet.
thanks
 
Graag gedaan! Zet je 'm nog ff op opgelost? Dank.

Groet, Leo
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan