• 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.

Aantal dagen in een maand(vba)

Status
Niet open voor verdere reacties.

wieter

Terugkerende gebruiker
Lid geworden
26 jun 2009
Berichten
1.128
Mijn vrouw wil een papieren maandkalender, waarop ze afspraken kan noteren.
Met de prachtige code van [snb] heb ik een dynamische kalender ineen geknutseld.
Na de keuze van de maand, in combobox2, verschijnen ALTIJD 31 dagen. row(1:31)
Graag had ik dat de juiste aantal dagen van de gekozen maand verschijnen (ook bij schrikkeljaar).
Met een formule kan ik wel het juiste aantal dagen van een maand berekenen(zie cel A3).
Maar die formule omzetten in vba-code, en toepassen in het Change-event, lukt mij niet.
Code:
Private Sub ComboBox2_Change()
    [A4].Resize(31) = [if(year(date(B1,B2,row(1:31)))=--B1,date(B1,B2,row(1:31)),"")]  
End Sub
Kan iemand het combobox2_Change() event, zo aanpassen dat het juiste aantal dagen verschijnt?
 

Bijlagen

Code:
Private Sub ComboBox2_Change()
    [A4:A34] = [if(row(1:31)>day(date(B1,B2+1,0)),"",date(B1,B2,row(1:31)))]
End Sub
 
Laatst bewerkt:
Bedankt, snb, prachtig.
Toch een nieuw probleempje nu.
De weggelaten dagen kleuren nu zoals een week-end dag, (blauw).
Toch staat in de voorw. opmaak:
Code:
=WEEKDAG($A4;2)>5
 
Laatst bewerkt:
PHP:
=(WEEKDAY($A4;2)>5)*NOT(ISBLANK($A4))

PS.

Code:
Private Sub ComboBox1_Change()
    ComboBox2.Value = 1
    
'    sn = Array(Blad1.ComboBox1.Value, "01-01", "25-12", "26-12", "27-04", "05-05", 0, 0, 0, 0, 0) 'jaar & nationale vrije dagen Nederland
    sn = Array(ComboBox1.Value, "01-01", "25-12", "11-11", "15-08", "21-07", "01-05", "01-11", 0, 0, 0, 0, 0) 'jaar & nationale vrije dagen België
    
    For j = 1 To UBound(sn) - 5
        sn(j) = DatePart("y", 1 * DateValue(sn(j) & "-" & sn(0)))
    Next
    
    d = (((255 - 11 * (sn(0) Mod 19)) - 21) Mod 30) + 21
    d = d + (d > 48) + 6
    y = DatePart("y", 1 * (DateSerial(sn(0), 3, 1) + d - ((Fix(1.25 * sn(0)) + d - 5) Mod 7))) '1e paasdag
    
    For j = 0 To 4
      sn(UBound(sn) - j) = y + Choose(j + 1, 0, 1, 39, 49, 50)
    Next
    
    Names.Add "feest", Join(sn, "|") & "|"
End Sub
 
Opgelost, formule in voorwaardelijke opmaak, had ik niet correct aangepast.

Ook bedankt voor de nieuwe code voor de feestdagen
Super!!
 
Laatst bewerkt:
Nog eentje voor de lol: vereenvoudigde formule voor A3
PHP:
=DAG(LAATSTE.DAG(A4;0))
 
@Enigmasmurf,
Bedankt voor je inbreng.
De formule in A3 was maar tijdelijk.
Ze diende alleen maar voor het omzetten naar vba.
Toch bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan