boven de 32000 en een beetje heb je geen integer meer, maar een long !
Dat is bekend, ook bij de vragensteller denk ik.
@Zapatr, lees mijn opmerking over je fout nog een keer en geef me dan gelijk ...:thumb:
Ik neem aan dat je doelt op deze opmerking van je? :
De grootste fout zit hem wel dat je iedere rij opnieuw moet kleuren en niet enkel de even zichtbare rijen, want een oneven zichtbare rij die de vorige keer gekleurd werd, blijft gekleurd ...
Nogmaals: ik kan me vergissen, maar daar kan ik het met de beste wil van de wereld niet mee eens zijn.
Voer het voorbeeld van Cocko uit, dus verberg de rijen 3, 4, 5, 6, 8, 10, en 11.
Run dan mijn macro.
Dan zul je zien dat de zichtbare rijen om en om gekleurd worden, o.a. ook rij 9, en vanaf rij 13 alle oneven rijen (of de rijnummers die gekleurd worden even of oneven zijn, hangt af van het feit welke rijnummers verborgen zijn).
Breng nu een wijziging aan in de verborgen rijen (verberg meer of minder rijen) en run de macro opnieuw.
Dan zul je zien dat een oneven rij die voor de wijziging gekleurd werd, niet noodzakelijk gekleurd blijft (dat dat wel zo is, is jouw stelling).
Wat nadere uitleg:
- Je hebt enerzijds de rijnummers in Excel, die onveranderd blijven;
- Je hebt anderzijds de rijen (ongeacht welke rijnummers dat in Excel zijn) die wel (of niet) gekleurd moeten worden. Om dat laatste te bepalen, heb ik de variabele a ingevoerd, die telt de rijen die zichtbaar zijn.
- Die zichtbare rijen moeten om en om gekleurd worden. Welnu: telkens als a even is (dus NIET noodzakelijk als het RIJnummer in Excel even is) wordt de rij gekleurd.
Er wordt in principe gestart met een range waarin geen enkele rij gekleurd is, nl:
.Range(.Cells(1, 1), .Cells(lr, 12)).Interior.ColorIndex = xlNone
Bij die coderegel is een opmerking op zijn plaats. De vragensteller moet bedenken wat ongeveer het maximale aantal rijen is dat hij denkt te gaan gebruiken. Als na een wijziging van gegevens de macro wordt uitgevoerd en het aantal rijen met gegevens is kleiner dan voor de wijziging, dan worden met die ene coderegel hierboven niet alle rijen ontdaan van hun kleur (nl. de onderste rijen niet). Om er zeker van te zijn dat alle rijen ontkleurd worden, kan die ene regel daarom beter vervangen worden door:
- ofwel: .Range(.Cells(1, 1), .Cells(3000, 12)).Interior.ColorIndex = xlNone (als bekend is dat het aantal rijen met gegevens nooit groter zal zijn dan 3000; het getal 3000 moet de vragensteller naar eigen inzicht aanpassen);
- ofwel: .cells.interior.colorindex = xlnone (waarmee van alle cellen in het gehele werkblad de opvulkleur wordt verwijderd).
Hopelijk is dit duidelijk.