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

probleem met voorwaardelijk opmaak

glda19

Gebruiker
Lid geworden
14 jan 2008
Berichten
919
Hi
Op het tabblad Toelage speciale werken is er een tabel die begint op regel 24 steeds word uitgebreid als ik recht heb op een toelage speciale werken.
In de tabel maak ik gebruik van voorwaardelijk opmaak.
Ik heb 6 voorwaardelijke opmaak regels
3 die de lijn volledig in blauw,groen ,paars kleurt en het bereik zou dit moeten zijn =$A$24:$I$100
3 die de tekst in kolom f en g in blauw,groen,paars, kleurt en het bereik zou dit moeten zijn $F$24:$G$100

Onder de 6 regels staan er nog regels die ik totaal niet heb toegevoegd en is niet de eerste keer ik dit voor heb gehad.
 

Bijlagen

  • Toelage speciale werken Glenn.xlsm
    70,7 KB · Weergaven: 13
Een paar dingen die mij opvallen.
Technisch reining

Dit staat op verschillende manieren geschreven.
De extra VO regels kunnen veroorzaakt worden door kopiëren en plakken.
 
je kan VBA laten die VO's opschonen ....

CSS:
Sub GLDA()

     '*******************************************************************************
     ' met deze macro kan je, als excel er een zootje van gemaakt heeft, na toevoegen/schrappen van rijen,
     ' en in het geval van "gemakkelijke" VO's, die rommel-VO's deleten en terug aanmaken.
     'voorwaarde is dat die allen in de 1e rij ook staan, want vanaf de 2e rij worden de VO's verwijderd
     '*******************************************************************************

     Dim nLR, nCF, UN, iSect As Range, b, c1

     With Range("TblToegalgeSpecialeWerken").ListObject     'jouw gestructureerde tabel
          nLR = .ListRows.Count              'aantal rijen
          If nLR <= 1 Then Exit Sub          'niet minstens 2 = einde
          Set c1 = .ListRows(1).Range        'je 1e rij, die dus als basis dient om de rest te reconstrueren
          If nLR > 1 Then .DataBodyRange.Offset(1).Resize(nLR - 1).FormatConditions.Delete     'alle VO's vanaf de 2e rij verwijderen
          nCF = c1.FormatConditions.Count    'hoeveel VO's staan er in die 1e rij
          For i = nCF To 1 Step -1           'van de laatste tot de 1e
               With c1.FormatConditions(i)
                    Set UN = .AppliesTo
                    b = False                'vlaggetje UN moet worden aangepast
                    For Each ar In .AppliesTo.Areas     'alle areas aflopen
                         Set iSect = Intersect(ar, c1)     'intersect met de 1e rij
                         If Not iSect Is Nothing Then b = True: Set UN = Union(UN, iSect.Resize(nLR))     'eventueel uitbreiden van UN en vlaggetje opzetten
                    Next
                    If b Then .ModifyAppliesToRange UN     'bij vlaggetje, bereik aanpassen
               End With
          Next
     End With
End Sub
 
Blijkbaar heb je ook problemen met andere openstaande vragen
 
@Cow wat bedoel je met 1 ste rij en verwijderd van 2 de rij.
Zijn sommige die pas x rijen verder voor het eerst voorkomen
 
Het is niet omdat ze openstaan zoals bij velen ze nog actueel zijn. Is nog maar pas dat ik opgelost zie verschijnen
 
"Zijn sommige die pas x rijen verder voor het eerst voorkomen"
Wel dan moet je maken dat die toch op de 1e rij beginnen maar dan in de formule verwerken dat die pas op regel x kunnen werken. VBA kan moeilijk uitmaken of een VO een rommel-copie van een andere is en het is toch je bedoeling om het aantal VO's drastisch te verminderen.
PS. ik weet niet meer uit mijn hoofd of er zo'n VO in stond, zo ja, welke was het ?
 
Hoe doe ik dat ze laten starten van 1ste regel. Ik kan op voorhand niet zeggen wanneer een bepaalde code voorkomt. Hangt af wanneer het werk binnen komt en ik er moet aan meehelpen.
Moet bv niet altijd aan de graffiti meehelpen
 
1e VO = paars voor "glen" in de kolom J, "graffiti" in de kolom G en datum in 2024 in kolom A
 

Bijlagen

  • Toelage speciale werken Glenn.xlsm
    83,1 KB · Weergaven: 4
net je vba code eens getest voor het opschonen van vo. Dus die gaat kijken in de bereiken hoeveel vo er beginnen op de eerste regel. en deze die er niet opbeginnen verwijderen
 
ja, klopt en daarna die die beginnen op regel 1 doortrekken naar de andere regels. Dat lukt bij niet te complexe regels, die niet buiten hun eigen rij kijken
 
Mooie sub maar hoe zouden we deze kunnen aanpassen zodat we daar een addin of bij andere vo kunnen gebruiken
 
Het beste is dat je leert begrijpen wat hij doet, dan kan je hem zelf aanpassen.
 
snap wat die doet maar is nu in de in de range TblToegalgeSpecialeWerken en daar kun je vlot rijen tellen.
Maar hoe zonder een tabel. En wil niet steeds het bereik moeten gaan aanpassen in de code
 
CSS:
Sub test()
     '*********************************************************************
     'aanroepen van de macro "GLDA" met als gekozen bereik de inhoud van tabel
     'je kan hier dus zo ook een gewoon bereik invullen, zoals sheets("Blad5").range("B20:F100")
     'je gebruikt de VO's van de 1e rij van dat bereik en je kopieert die dan door naar de rest
     '*********************************************************************

     GLDA Range("TblToegalgeSpecialeWerken").ListObject.DataBodyRange

End Sub

Sub GLDA(MijnBereik As Range)

     '****************************************************************************************************
     ' met deze geparameterde (goeie naam?) macro kan je, als excel er een zootje van gemaakt heeft, na toevoegen/schrappen van rijen,
     ' en in het geval van "gemakkelijke" VO's, die rommel-VO's deleten en terug aanmaken.
     'voorwaarde is dat die allen in de 1e rij ook staan, want vanaf de 2e rij worden de VO's verwijderd
     '****************************************************************************************************

     Dim nLR, nCF, UN, iSect As Range, b, c1

     With MijnBereik     'jouw tabel of gewoon bereik
          nLR = .Rows.Count              'aantal rijen
          If nLR <= 1 Then Exit Sub          'niet minstens 2 = einde
          Set c1 = .Rows(1)        'je 1e rij, die dus als basis dient om de rest te reconstrueren
          If nLR > 1 Then .Offset(1).Resize(nLR - 1).FormatConditions.Delete     'alle VO's vanaf de 2e rij verwijderen
          nCF = c1.FormatConditions.Count    'hoeveel VO's staan er in die 1e rij
          For i = nCF To 1 Step -1           'van de laatste tot de 1e
               With c1.FormatConditions(i)
                    Set UN = .AppliesTo
                    b = False                'vlaggetje UN moet worden aangepast
                    For Each ar In .AppliesTo.Areas     'alle areas aflopen
                         Set iSect = Intersect(ar, c1)     'intersect met de 1e rij
                         If Not iSect Is Nothing Then b = True: Set UN = Union(UN, iSect.Resize(nLR))     'eventueel uitbreiden van UN en vlaggetje opzetten
                    Next
                    If b Then .ModifyAppliesToRange UN     'bij vlaggetje, bereik aanpassen
               End With
          Next
     End With
End Sub
 

Bijlagen

  • Toelage speciale werken Glenn.xlsm
    83,8 KB · Weergaven: 4
Als er geen bijkomende vragen zijn kan je misschien deze, en veel andere vragen, als opgelost zetten?
 
Terug
Bovenaan Onderaan