• 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 als?

Status
Niet open voor verdere reacties.
Wat gaat er niet goed in het bestand dat lommer in #11 geplaatst heeft?

Knipsel.PNG
 
Cobbe, VenA, Lommer en Plongske,

allen hartelijk dank voor het meedenken.

@Cobbe, dank voor je laatste bericht ook. Het is gelukt: heel fijn.
@VenA en Lommer, ik zal het maandag op mijn werk ook weer proberen. Afgelopen keer, zou ik zweren dat er bij de wijziging van de opmaak zowel het aantal VB als LB veranderde en er op een gegeven moment zelf negatieve waardes waren af te lezen. Nu ik op mijn eigen computer n.a.v. jouw bericht VenA, weer eens ben gaan kijken naar de oplossing die Lommer in bericht 11 heeft gezet werkt het perfect to be honest. Dat is dus top. Ik zou het alleen wel suf vinden dat ik daar mogelijk een goede oplossing heb afgedaan met: "het werkt niet", terwijl dat het wel degelijk werkt. Efin,.. kom ik op terug.

VenA: ben jij bereid om kort toe te lichten hoe jouw code werkt? Het wordt voor mij straks een werkdocument. Daarvan zou het fijn zijn als ik wat meer kan toelichten dan alleen: "dat heeft een slimme excel kenner bedacht en het werkt!"

Code:
Function VenA(r1 As Range, r2 As Range, Optional r3 As Range) As Long
  For Each cl In r2
    If r3 Is Nothing Then
    VenA = VenA + Abs(cl.Interior.ColorIndex = r1.Interior.ColorIndex)
    Else
    VenA = VenA + (cl.Value = r3.Value) * (cl.Interior.ColorIndex = r1.Interior.ColorIndex)
    End If
  Next cl
End Function
 
Het is niet de code die ik geplaatst heb. Als er maar 2 mogelijkheden zijn dan gebruik ik IF THEN ELSE op 1 regel of als alternatief IIF().

Wat je er niet aan begrijpt, begrijp ik niet. Als iets TRUE is in een vergelijking dan krijgt dit in VBA de waarde -1. Als een vergelijking FALSE als resultaat geeft dan is de waarde 0. Door gebruik te maken van Abs() maak je van de -1 een 1. Het vermenigvuldigen van 2 -1en zal altijd 1 opleveren.

In mijn optiek minder leesbaar dan
Code:
VenA = VenA + Abs(cl.Interior.ColorIndex = r1.Interior.ColorIndex)
mag het ook zo
Code:
VenA = VenA -(cl.Interior.ColorIndex = r1.Interior.ColorIndex)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan