labels op userform kleuren op basis van celinhoud op werkblad?

Status
Niet open voor verdere reacties.

harrybrinkman

Gebruiker
Lid geworden
7 nov 2019
Berichten
95
Toppers,

Ik heb een werkblad waarop 2 kolommen, kolom A toont 12 maanden, Kolom B toont bijbehorende bedragen. Deze laat ik samenkomen in een simpel overzichtje op een VBA userform. Dit doe ik via labels. Nu zou ik graag, op het moment dat een bedrag negatief is (dus kleiner dan 0) zien dat de tekstkleur van dat label rood kleurt. Eigenlijk net zoals je dat op een werkblad doet middels celeigenschappen of voorwaardelijke opmaak.
Echter volgens mij heeft een label geen "waarde" dus kan ik ook niets kleuren op basis daarvan, is het op een andere manier mogelijk? bijvoorbeeld op basis van de celinhoud op het werkblad, want die heeft uiteraard wel een "waarde". Ik kom er ff niet uit. Ik ben een groentje op het gebied van VBA vertel ik alvast als waarschuwing :)

ik heb een voorbeeldbestand bijgevoegd om iets duidelijker te kunnen zijn. dit is een ienieminie aftreksel van het door mij gebruikte originele bestand welke ik van mijn werkgever niet mag delen. Het gaat me ook alleen maar om het kleuren van de labeltekst.

Wie weet raad??

Alvast bedankt,
Harry
 

Bijlagen

  • labels kleuren.xlsm
    25,5 KB · Weergaven: 39
Hallo,

Je gebruikt in je code bv. al "Sheets("Blad1").Cells(3, 2)" om als caption voor je label te gebruiken. Dat IS toch de waarde die moet geëvalueerd worden om de kleur te bepalen. Dat maakt de vraag of de waarde via je label kan komen (ja, dat kan, maar dit tussen haakjes) irrelevant, niet?
 
Wel, omdat het toch te warm is om in de tuin te werken, nog deze aanvulling.
Je zou je code bv. ook zo kunnen schrijven:
Code:
Private Sub UserForm_Initialize()

With Sheets("Blad1")
    For i = 1 To 12
        Controls("Label" & i).Caption = .Cells(i + 2, 1)
        Controls("Label" & i + 12).Caption = Format(.Cells(i + 2, 2), "€ #,###,###.00")
        If .Cells(i + 2, 2) < 0 Then
            Controls("Label" & i + 12).BackColor = RGB(255, 0, 0)
        End If
    Next i
End With

End Sub
 
Of eehn loopje onder de code .

Code:
For A = 13 To 24
 If UserForm1.Controls("Label" & A).Caption < 0 Then UserForm1.Controls("Label" & A).ForeColor = vbRed
Next A
 

Bijlagen

  • Labels kleurenMV.xlsm
    25,8 KB · Weergaven: 35
dank allebei,

Ik heb voor nu even de methode van mvdvlist gekozen vanwege "snel resultaat". Voor een volgende versie van "mijn" tooltje ga ik de Enigmasmurf methodiek uitzoeken, dat lijkt me een heleboel code te schelen (en daarmee kans op fouten)
 
Kan ook met VBA:

Code:
Private Sub UserForm_Initialize()
   sn = Blad1.Cells(3, 1).CurrentRegion

   For Each it In Controls
     If TypeName(it) = "Label" Then it.Caption = sn(it.TabIndex Mod 12 + 2, 1 + it.TabIndex \ 12)
     it.ForeColor = RGB((Abs(Val(it) < 0)) * 255, 0, 0)
   Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan