Kalender automatiseren

Status
Niet open voor verdere reacties.

MEradus

Gebruiker
Lid geworden
25 nov 2012
Berichten
287
Hallo allemaal,

Ik heb op het werk een kalender gemaakt.
Nu weet ik wel dat je maar 1x in het jaar zo'n ding hoeft te maken, maar nou vroeg ik me af of het niet wat makkelijker kan.

Heb al wat dingetjes geprobeerd, maar wil niet echt lukken.

Hebben jullie misschien ideeën?

Het mooiste zou zijn dat vba/excel kan refereren aan cel M1 deze heb ik zo ingericht dat ik daar (in dit geval 1-1-2015) de 1e datum in toets en alleen het jaartal laat zien.
Eigenlijk zou dat de trigger moeten worden om de kalender opnieuw in te laten vullen. Mijn VBA skills zijn niet goed dus heb ik ook niets meer in de macro's staan, omdat ik even niet meer weet hoe ik dit
zou moeten doen.

Ik hoop dat iemand mij hiermee kan helpen!

Alvast bedankt voor het meedenken.

Bekijk bijlage Standaard kalenders test macro's.xlsm
 
Ik heb het volgende voor je gedaan:
Van de maand Januari een benoemde range gemaakt.
Een knopje "Maak kalender" toegevoegd.
Het jaar bij januari uit M1 laten halen.

De macro achter het knopje vult voor het in M1 opgegeven jaar de maand Januari.
Met dat voorbeeldje zou je de andere maanden zelf moeten kunnen doen. Uitdaging is nog even het schrikkeljaar.
Als je er niet uitkomt dan laat het maar weten.

Bekijk bijlage Standaard kalenders test macro's.xlsm
 
Laatst bewerkt:
Mooi gemaakt Ed.
Verander nog even vbnullsting in vbnullstring. :thumb:
 
Dank je :)
En je hebt helemaal gelijk met dat typefoutje dus dat heb ik aangepast.
Maar het vreemde is wel dat ik er geen foutmelding op krijg en het gewoon doet wat verwacht wordt :shocked:
 
Iets ander aanpak, zonder knop (waarom zou je moeilijk doen ;); gewoon een jaartal invoeren, want een datum? niet nodig :).
Ik ben iets later, maar d'r zit dan ook meer code in :)
 

Bijlagen

@Ed,

Datzelfde ondervond ik ook.
Ik was benieuwd of de code daar langs kwam, dus even een apostrof gezet in die bewuste lus.
Het blokje liep niet goed meer, dus de code loopt er zo door, en doet wat het doen moet, vreemd he?
 
IETS meer code inderdaad Michel ;)
Maar jij vult ook de weeknummers. Netjes :)
Ik mis echter dag 29 in februari bij een schrikkeljaar.
 
Work in Progress.... d'r zijn meer zaken waar je tegen aan kunt lopen :). Maar het schrikkeljaar krijg ik er nog wel uit; ff zoeken nog.
 
Bij jou twijfel ik er niet aan dat het wel in orde komt :)
 
@Ed,

Datzelfde ondervond ik ook.
Ik was benieuwd of de code daar langs kwam, dus even een apostrof gezet in die bewuste lus.
Het blokje liep niet goed meer, dus de code loopt er zo door, en doet wat het doen moet, vreemd he?

Dat blijft vreemd inderdaad. Maar ik heb die loop verwijderd en er Range(Maand).ClearContents van gemaakt.
Da's veel beter :)
De hele code voor het vullen van een maand ziet er nu zo uit:

Code:
Sub Vulmaand(Maand As String, MaandNummer As String)
    Dim kolom As Integer
    Dim Regel As Integer
    Dim z As Integer
    
    Regel = 1
    kolom = Weekday("01-" & MaandNummer & "-" & Format([M1], "yyyy"), FirstDayOfWeek = vbMonday)
    
    Range(Maand).ClearContents
    
    For z = 1 To 31
        Range(Maand)(Regel, kolom) = z
        If kolom < 7 Then
            kolom = kolom + 1
        Else
            kolom = 1
            Regel = Regel + 1
        End If
    Next z
End Sub

De aanroep is:
Call Vulmaand("JANUARI", "01")

Lekker kort dus. En als TS het wenst dan wil ik ook nog wel het weeknummer erbij doen. Ook moet de 31 variabel zijn, 28, 29, 30 of 31.
Dan is ook het schrikkeljaar meteen geregeld en daarmee wordt de code maar heel iets langer.

Michel heeft gelijk dat het knopje niet nodig is, de routine kan ook anders worden geactiveerd. Maar dat maakt voor de code verder niks uit.
Dat zat er in voor m'n eigen test gemak ;)
 
Laatst bewerkt:
Da's een mooie Niels :thumb:
Vergt wel een functie per cel.
 
Hallo allemaal,

Leuk om al die reacties te zien, bedankt dat jullie mij zo helpen!!
Ik heb de kalenders getest en hieronder mijn vragen hierover.

@Michel, het is inderdaad net zo makkelijk om alleen het jaar in te vullen.
Ik heb alleen het idee dat hij niet alle maanden (goed) meeneemt, kan dat kloppen?

@Ed, met of zonder knop, werkt ook zoals ik het graag zou willen dank je wel! Maar ondanks ik steeds een beetje verder kom, ben ik nog steeds een leek.
Ik heb net geprobeerd om de code "Vulmaand" te kopiëren en de declaraties een andere naam te geven, maar dit werkte niet helemaal. Hoe kan ik dit het beste doen?
 
@Niels,

Bij het schrijven van de vorige reactie, die van jou nog niet gezien.
Dit is inderdaad ook een manier, om geen macro's te gebruiken maar alleen formules.
Maar hier heb je per cel een formule nodig en dat is bij macro's niet nodig.

Ik ga zeker even kijken!
 
De VulMaand routine hoef je niet te kopiëren, die is goed zo. Ik heb Januari geregeld maar wat er nog moet gebeuren is dat alle andere maanden ook een benoemde range worden. Dan hoef je alleen maar de commentaar tekens voor de overige call statements in NWdatum te verwijderen.

Kijk dus hoe de benoemde range van januari er uit ziet en regel dat ook voor de andere maanden. Daarnaast moet de vulmaand routine nog wel zo worden aangepast dat hij per maand het juiste aantal dagen gebruikt. Eventueel kan ook nog het weeknummer erbij. Als je daar hulp bij nodig hebt dan laat het maar weten.

Maar heb je al naar die van Niels gekeken?

Edit:
Ja dus ;)
 
Laatst bewerkt:
Wat er nog moest gebeuren heb ik voor je gedaan in bijgevoegd document. Zo werkt hij voor het hele jaar. Ook het schrikkeljaar is hierin geregeld. Zoals je ziet zijn het nog steeds 2 korte routines en is er alleen een kleine functie bijgekomen.

Bekijk bijlage Standaard kalenders test macro's.xlsm

Ook heb ik in het kalenderblad de maanden even in de juiste volgorde gezet ;)
 
Laatst bewerkt:
Zie inderdaad de extra functie, werkt helemaal super.
En ik zag idd dat ik een fout had gemaakt bij het voorbeeld bestand, bedankt voor het herstellen.
En natuurlijk ook bedankt voor het bestand. Precies wat ik nodig had!!!

Ook voor de anderen bedankt voor het meedenken, maar wat mij betreft is mijn vraag opgelost!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan