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

kleuren tellen van voorwaardelijke opmaak

Status
Niet open voor verdere reacties.

Pander

Gebruiker
Lid geworden
14 okt 2014
Berichten
198
Hallo,

Ik was aan het proberen om een aantal cellen met dezelfde kleur te tellen.

Code:
Function AANTALZELFDEKLEUR(Gebied As Range, Cel As Range) As Double
Dim Kleur As Integer
  Application.Volatile
  Kleur = Cel.Interior.ColorIndex
  For Each Cel In Gebied.Cells
    If Cel.Interior.ColorIndex = Kleur Then
      AANTALZELFDEKLEUR = AANTALZELFDEKLEUR + 1
    End If
  Next Cel
End Function

Daar vond ik bovenstaande voor. Dat werkt perfect, alleen niet wanneer de kleur van een cel is verkregen door een voorwaardelijke opmaak.
Weet iemand hoe bovenstaande aangepast kan worden zodat e.e.a. ook werkt met de kleur van een voorwaardelijke opmaak?
 
VBA herkent geen voorwaardelijke opmaak zover ik weet.
 
Is het niet makkelijker om de cellen die aan de voorwaarden te voldoen, dan de kleuren, te tellen?
ik bedoel op basis van de celwaarde, ipv de kleur.
 
VBA herkent geen voorwaardelijke opmaak zover ik weet.
In VBA kan je de kleur van voorwaardelijke opmaak zo ophalen:
Code:
Range.DisplayFormat.Interior.Color
 
dankjewel Edmoor

Als ik nu er dit van maak

Code:
Function AANTALZELFDEKLEUR(Gebied As Range, Cel As Range) As Double
Dim Kleur As Integer
  Application.Volatile
  Kleur = Range.DisplayFormat.Interior.color
  For Each Cel In Gebied.Cells
    If Range.DisplayFormat.Interior.color = Kleur Then
      AANTALZELFDEKLEUR = AANTALZELFDEKLEUR + 1
    End If
  Next Cel
End Function

Dan geeft excel aan dat er een compileer fout is. Range wordt blauw gearceerd met de opmerking: Het argument is niet optioneel
 
Je hebt het letterlijk gebruikt, dat kan natuurlijk niet.
In plaats van Range moet je aangeven wat die Range dan is.
Dat zal dan waarschijnlijk Cel zijn.
 
Laatst bewerkt:
DisplayFormat in een UDF werkt volgens mij niet, (tenzij je er nog een Evaluate aan toevoegt)
De opmerking van lam201 post #4 lijkt me handiger/beter
 
Gebruik, zoals Lam ook al in #4 zei, dezelfde formule voor het optellen die je ook gebruikt voor de voorwaardelijke opmaak.
Voor een snellere oplossing kun je beter een klein EXCEL voorbeeldbestandje hier plaatsen ipv alleen maar een VBA code.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan