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

voorwaardelijke opmaak

Status
Niet open voor verdere reacties.

brandernl

Gebruiker
Lid geworden
19 okt 2004
Berichten
445
Ik heb een bestand waarin een planning van dokters gedaan wordt; met een macro genereer ik een lijst van dienstdoenden. Voor de overzichtelijkheid wil ik de weekeinden accentueren.
Ik heb daarvoor deze macro geschreven, maar hij werkt niet en ik kan niet ontdekken waar de fout zit
De getallen bij B3 zijn feestdagen voor 2022

Code:
Private Sub Cond_Opmaak()
'opmaak van het blad, met weekeinden geaccentueerd

    Range("A1").Select
    
    Range("A1").FormatConditions.Add Type:=xlExpression, Formula1:= _
                                                                      "=OF($C1=""za"";$C1=""zo"";B3=44562;B3=44669;B3=44678;B3=44686;B3=44707;B3=44718;B3=44920;B3=44921)"

    Range("A1").FormatConditions(1).Interior.ColorIndex = 15
    Range("A1").Copy
    Range("A1:N51").PasteSpecial Paste:=xlPasteFormats
    Range("B1:N51").Font.Bold = False
    Range("B:B, I:I").NumberFormat = "[$-413]d/mmm;@"
End Sub
 

Bijlagen

Even wat hobbywerk, de VBA-specialisten zullen het nog wel verbeteren oif met andere suggesties komen denk ik...
Code:
Private Sub Cond_Opmaak()
'opmaak van het blad, met weekeinden en feestdagen geaccentueerd
    
    Dim r As Range, c As Range
    Set r = Range(Range("B3"), Range("B3").End(xlDown))
    For Each c In r
       If Weekday(c) = 1 Or Weekday(c) = 7 Or c = 44669 Or c = 44678 Or c = 44686 Or c = 44707 Or c = 44718 Or c = 44920 Or c = 44921 Then
            c.Interior.ColorIndex = 15
        Else
            c.Interior.ColorIndex = xlNone
    End If
    Next c
    r.NumberFormat = "[$-413]d/mmm;@"
End Sub
 
Laatst bewerkt:
Hé, dat is een manier waar ik niet aan gedacht heb. Ik probeerde de voorwaardelijke opmaak zoals die in het lint staat door de macro te laten uitvoeren.

Altijd leerzaam het forum, dank Alex
 
Haal onderstaande regel eruit.
Code:
=OF(#VERW!="za";#VERW!="zo";ALS.FOUT(VERGELIJKEN(A$10;feestdagen;0);0))


Wat werkt er niet?
De regels in voorwaardelijke opmaak worden uitgevoerd zoals ze in volgorde staan.
Bv. bij de eerste VW-regel heb je geen opmaak voor ingesteld, maar wordt wel uitgevoerd.
 
Je hebt gelijk, maar ik weet niet waar die eerste regel vandaan komt; zal ongetwijfeld zijn door de macro die de lijst genereert, die doet nogal wat knip- en plakwerk.

Is het dan een optie om te zeggen:
Code:
Range ("A1:N51").clearformat
en daarna
Code:
Range("A1").FormatConditions.Add Type:=xlExpression, Formula1:= _
                                                                      "=OF($C1=""za"";$C1=""zo"";B3=44562;B3=44669;B3=44678;B3=44686;B3=44707;B3=44718;B3=44920;B3=44921)"
 
Bv.

Code:
Range("A3:N51").FormatConditions.Delete
 With Range("A3:N51").FormatConditions.Add(Type:=xlExpression, Formula1:= _
                                                                      "=OF($C1=""za"";$C1=""zo"";B3=44562;B3=44669;B3=44678;B3=44686;B3=44707;B3=44718;B3=44920;B3=44921)")
    .Interior.ColorIndex = 15
    .StopIfTrue = True
   End With
 
Dank je wel, maar ik wil het door een macro laten doen. En die oplossing heb ik inmiddels gekregen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan