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

code aanpassen naar willekeurige dagen.

Status
Niet open voor verdere reacties.

glda19

Gebruiker
Lid geworden
14 jan 2008
Berichten
916
De code komt uit volgende post https://www.helpmij.nl/forum/showthread.php/949700-hoe-autolatisch-een-vorm-leggen-op-een-bepaalde-dag-voor-gans-het-jaar

Hoe zou ik onderstaande code kunnen wijzigen dat ik geen 5 of 7 x de zelfde code moet schrijven.
Dus de gebruiker kan op een bepaalde cel bv aa9 uit een lijst de dag selecteren
Hoe kan ik nu zorgen dat het getal 3 een variabele word en het juiste nummer krijgt afhankelijk van de gekozen dag uit de lijst
Code:
Sub Woensdagen()
   Dim c       As Range
   For Each c In Sheets("2019").Range("B5:Q45").Cells                'gans je agenda
      If IsDate(c) And Not c.MergeCells Then                         'cel bevat een datum en is geen samengevoegde cel
         If Weekday(c, vbMonday) = 3 Then Inkleuren c                'het is een woensdag, dan naar die andere macro springen
      End If
   Next

End Sub

Sub Inkleuren(c As Range)
   c.Interior.ColorIndex = 3 'als stom voorbeeld, de achtergrondkleur veranderen
End Sub
 
Laatst bewerkt:
Plaats je bestand anders even
 
Die tweede sub is niet nodig.

Als het een cijfer is in AA9.
Code:
Sub Woensdagen()
   Dim c       As Range
   For Each c In Sheets("2019").Range("B5:Q45").Cells                'gans je agenda
      If IsDate(c) And Not c.MergeCells Then                         'cel bevat een datum en is geen samengevoegde cel
         If Weekday(c, vbMonday) =[COLOR=#ff0000] Sheets("2019").Range("aa9").Value [/COLOR] Then c.Interior.ColorIndex = 3              'het is een woensdag, dan naar die andere macro springen
      End If
   Next
End Sub
 
Code:
Sub Woensdagen()
   Dim c       As Range
   For Each c In Sheets("2019").Range("B5:Q45").Cells   'gans je agenda
      If IsDate(c) And Not c.MergeCells Then     'cel bevat een datum en is geen samengevoegde cel
         Select Case Weekday(c, vbMonday)        'welke weekdag
            Case 1: Inkleuren c, 3               'maandag
            Case 2, 5: Inkleuren c, 5            'dinsdag en vrijdag
            Case 3: Inkleuren c, 6               'woensdag
            Case 4: Inkleuren c, 9               'donderdag
            Case 6 To 7: Inkleuren c, 10         'zaterdag en zondag
         End Select
      End If
   Next

End Sub

Sub Inkleuren(c As Range, kleur As Integer)
   c.Interior.ColorIndex = kleur                 'als stom voorbeeld, de achtergrondkleur veranderen
End Sub
het kan eigenlijk zo, maar die macro "inkleuren" is eigenlijk zo kort en onbeduidend (die was toen gemaakt als voorbeeld en dacht dat die nog enorm zou uitgebreid worden) , dat je die direct achter de case ... kan zetten ipv. nu even een zijsprongetje te maken.

de kleurtjes zelf, zie bijvoorbeeld http://dmcritchie.mvps.org/excel/colors.htm en dan ga je naar beneden tot ColorIndex -- 56 Excel Colors [#colors56/#colorindex]
besluit, dat getal mag maar in het bereik 0-56 liggen. Wil je nog meer tussenliggende kleuren, dan wordt de opzet analoog met met RBG-kleuren, kan ook
 
Laatst bewerkt:
@hsv uw code werkt niet. Daar er op aa9 de dag staat en niet het dagnummer
 
@cow18 jij kleurt gans de kalender wat niet de bedoeling is.
Enkel de daag die op aa9 staat mag gekleurd worden.
 
In de link die er bij staat, staat in AA9 gewoon een formule die 11 aangeeft.
Een weekdag gaat maar van 1 /m 7 hoor.
 
en hoe kan ik zorgen dat als er een feestdag is op die dag deze niet de kleur 4/5 krijgt
 
heb het zeer eenvoudig opgelost
Wist niet dat het zo eenvoudig was.
We zochten het veel te ver.
Dus via voorwaardelijke opmaak
https://www.get-digital-help.com/how-to-highlight-dates-based-on-day-of-week/
En juist bij de tekst [$-813] toegevoegd op te voorkomen dat als de pc niet correct is ingesteld en bv op engels staat kan zet hij de dagen om naar het engels en dan werkt het niet meer.
De formule is nu =TEKST(B5,"[$-813]DDDD")=$X$10
En werkt super op en klein probleempje na
Nu worden ook de feestdagen met de kleur van 4/5 over schreven.
De formule voor de feestdagen is =VERT.ZOEKEN(B5,Feestdagen,1,0) en feestdagen is een lijst met de feestdagen.
Dus zou graag willen dat de feestdagen de kleur van de feestdagen behoud en niet de kleur van 4/5 krijgt.
 
Laatst bewerkt:
hallo, ik heb heel netjes een antwoord gegevens op de gestelde vraag, uitgaande van het voorbeeld en zonder terug te kijken naar de voorafgaande vraag.
Het bereik was B5:Q45 en die werden dus netjes gekleurd.

De vraag was/is niet duidelijk genoeg gesteld, zoiets leidde in het verleden ook al tot ellenlange topics.
Popipipo's handtekening zegt niet voor niets, dat de vraag eigenlijk al voor zoveel procent het antwoord inhoudt.

Dat VO, 1.000 keer sneller en eenvoudiger tot een bevredigend antwoord leidt, dat is duidelijk.
Voeg een VO voor die feestdagen toe, zet die tamelijk hoog in het lijstje en zeg dat daarna de andere VO's net meer moeten afgewerkt worden (een vinkje)
 
Laatst bewerkt:
er stond duidelijk dat de gebruiker in cel aa9 een en dag kiest . Dus moet niet gans die kalender gekleurd worden enkel die dag dat hij selecteert met uitzondering als er een feestdag valt op die dag
 
Code:
If Weekday(c, vbMonday) = [COLOR=#ff0000]weekday([/COLOR]Sheets("2019").Range("aa9").Value[COLOR=#ff0000],vbmonday)[/COLOR]
 
je vraagt een vrijwilliger om raad, dus moet je het die zo gemakkelijk mogelijk maken en alle relevante zaken aanreiken.
Ik ben geen advocaat, die alle ooit verstrekte adviezen in een vroegere topic er op na ga vlooien, om toch niet een net verkeerd uitspraak te doen.

Ik heb éénduidig op de voorliggende vraag geantwoord.
Daar was wel ergens AA9 in, wel na de zoveelste vraag moet je toch een beetje feeling beginnen krijgen hoe VBA werkt en zelf lichte varianten op gestelde oplossingen aandurven.
Dit forum is er om ideeën, methoden van oplossingen uit te wisselen, niet om je volledig aan het handje, van start tot finish bij te staan.

Punt.
Einde discussie voor mij.
 
heb ergens gevonden op internet maar vind niet meer terug waar.
dat het ook zo gaat via voorwaardelijk opmaak. Zo kleur ik alle dagen die gelijk zijn aan wat er staat als dag in x10
=TEKST(B5,"[$-813]DDDD")=$X$10.
Maar er is nog 1 probleem als er een feestdag voorkomt gaat de bovenstaande formule deze ook kleuren in de kleur van 4/5
De feestdagen worden ook gekleurd via voorwaardelijk opmaak. formule =VERT.ZOEKEN(B5,Feestdagen,1,0) waarin feestdagen

Hoe zou ik nu kunnen zorgen dat de feestdag de kleur van de feestdag krijgt en niet van de dag 4/5
 
wordt iets van isgetal(vergelijken(mijndatum;feestdagen;0)) en verder laatste alinea van #10
 
Laatst bewerkt:
bedankt het werkt.
Heb nu die vo voor de feestdagen als eerste staan in de lijst.
En dan er onder deze voor het kleuren van de 4/5 dagen. Maar waar dient dat stoppen indien dat snap ik niet echt goed.
En heb nog een vraagje.
Maar denk niet dat dit kan opgelost worden. Waarom zijn niet alle randdiktes mogelijk bij voorwaardelijk opmaak maar die stoppen bij dunne . Zou graag een dikke rand willen bij een bepaalde cel.
 
draai de situatie om, geef iedere cel een dikke lijn en alle cellen, behalve diegene die dik moeten blijven, via VO dun.
Inderdaad, bij VO kan je anders aan de lijndikte niet veel veranderen.

kleur weekends oranje
kleur feestdagen behalve weekends rood
dagen, die een veelvoud van 5 zijn met een dikkere rand

heb je alvast een voorzet
 

Bijlagen

  • randen.xlsx
    15,5 KB · Weergaven: 39
Laatst bewerkt:
maar die cel moet meestal dun zijn
en als de cel er onder leeg is dan dik
 
als je een probleem niet in een rechte lijn kan oplossen, dan moet je er in een grote boog rond lopen.
Dikke lijnen gaat niet in VO, dus wel overal dikke lijnen in de gewone opmaak en met VO maak je er dun van.
Is dat jouw probleem dat VO er dan veel veel meer moet omswitchen, neen toch.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan