[VBA Excel] kleuren dmv waarden

Pagina: 1
Acties:
  • 2.341 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • pea992
  • Registratie: November 2000
  • Laatst online: 02-02-2023
Ik hoop dat ik hier in het goede forum zit, want het betreft een VB probleem binnen Excel:

Bij het veranderen van een waarde in een cel in excel door een keuzelijst moet
een andere cel een bepaalde kleur krijgen. Omdat het meer dan 3
variabelen betreft, kan er geen gebruik worden gemaakt van
'voorwaardelijke opmaak'.

Na een zoektocht heb ik de hieronder volgende VBA code
gevonden en aangepast. Er zijn helaas twee problemen met deze code:

1. De code geldt nu voor het hele blad, maar moet maar voor een samengevoegede cel (A1) gelden.
2. Als ik een getal invoer, en bevestig met enter, gaat
de kleuromschakeling goed. Helaas werkt dit niet als gevolg van een
functie of waarde uit een keuzelijst (wordt automatisch in de
uitvoercel gegenereerd).

Ik heb de opties geprobeert om de macro te activeren bij bvb veranderingen op de pagina, maar daarmee wordt dit laatste probleem niet verholpen.

Kan iemand mij helpen om deze problemen op te lossen?
Alvast bedankt!

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 Private Sub Worksheet_Change(ByVal Target As Excel.Range)

   With Target

    Select Case .Value
      Case 1
          .Interior.ColorIndex = 43
      Case 2
          .Interior.ColorIndex = 10
      Case 3
          .Interior.ColorIndex = 5
      Case 4
          .Interior.ColorIndex = 18
      Case 5
          .Interior.ColorIndex = 30
      Case 6
          .Interior.ColorIndex = 30
      Case Else
          .Interior.ColorIndex = xlNone
    End Select

   End With
   End Sub

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

pea schreef op 10 april 2003 @ 09:37:
...Er zijn helaas twee problemen met deze code:

1. De code geldt nu voor het hele blad, maar moet maar voor een samengevoegede cel (A1) gelden.
2. Als ik een getal invoer, en bevestig met enter, gaat
de kleuromschakeling goed. Helaas werkt dit niet als gevolg van een
functie of waarde uit een keuzelijst (wordt automatisch in de
uitvoercel gegenereerd).
1. Doe dan eerst een check of je target wel cel A1 is. ;)
2. Volgens mij is er verschil tussen waarde van het veld (kan dus ook een formule zijn) en het resultaat. Wellicht kan je wat vinden in de VBA help die erbij zit.

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

Heb je functies op je worksheet die zelfgemaakt zijn met VBA? Zo ja .. dan kun bij berekenen de cell laten bijkleuren.
Maar wat je wil (veranderen van kleur adhv meer dan 3 verschillende waarden in een cel met conditional formatting) is volgens mij niet zo snel toe te passen. Behalve dus met het change event(en calculate event van een worksheet .. moet je wel activecell object ipv target pakken.. kun je nog ff naar kijken).. maar zoals je al eerder zei .. dit gaat niet helemaal werken..

[ Voor 5% gewijzigd door henkleerssen op 10-04-2003 09:59 ]


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Die worksheet_change wordt niet eens getriggerd bij het selecteren van een item uit bijv. een combobox...


Wil je een combobox gebruiken, om die waarde te vullen in cel A1? Dan zou je een macro kunnen maken met je code en die koppelen aan je combobox...

[ Voor 41% gewijzigd door BtM909 op 10-04-2003 10:05 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • pea992
  • Registratie: November 2000
  • Laatst online: 02-02-2023
BtM909, niet direct... wat ik eigenlijk wil is dat de gebruiker uit een reeks (van 6 in dit specifieke geval) met een dropdownlist kiest welke optie van toepassing is, en dat aan de hand van die keuze een juiste kleurcode bovenaan de pagina komt te staan... misschien dat het veel simpeler kan, maar ik ben nog nauwelijks thuis in VB...

Acties:
  • 0 Henk 'm!

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

pea schreef op 10 April 2003 @ 10:12:
BtM909, niet direct... wat ik eigenlijk wil is dat de gebruiker uit een reeks (van 6 in dit specifieke geval) met een dropdownlist kiest welke optie van toepassing is, en dat aan de hand van die keuze een juiste kleurcode bovenaan de pagina komt te staan... misschien dat het veel simpeler kan, maar ik ben nog nauwelijks thuis in VB...
TJa ik ben bang dat je met vba toch gewoon aan de slag moet... Ik zie niet hoe je anders zou moeten doen...

Acties:
  • 0 Henk 'm!

  • pea992
  • Registratie: November 2000
  • Laatst online: 02-02-2023
ok, heeft iemand tips voor me misschien hoe ik dit probleem zou kunnen benaderen? Kan ik daarvoor dit stuk code aanpassen, of moet ik echt helemaal opnieuw beginnen? Eigenlijk is (in het simpel) dus de bedoeling:
ALS A100=1 DAN A1 celkleur wordt ROOD
ALS A100=2 DAN A1 celkleur wordt BLAUW etc voor 6 opties met 'realtime' update en de waarde van A100 wordt veranderd dmv de output van de dropdownlist waarde... ik ben net pas bezig met VB, dus erg veel basiskennis heb ik helaas nog niet, kan het gelukkig wel allemaal lezen en volgen...

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

pea schreef op 10 April 2003 @ 10:53:
ik ben net pas bezig met VB, dus erg veel basiskennis heb ik helaas nog niet, kan het gelukkig wel allemaal lezen en volgen...
Ik heb ook geen kennis van VB (het is echt VBA hoor ;))

Maar leer er steeds meer van:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub ColorMeBad()
    'BtM909 is the best :)
    
    Dim strSource As String
    
    strSource = Range("A100").Value
    
    With Range("A1")
    
    Select Case strSource
      Case 1
          .Interior.ColorIndex = 43
      Case 2
          .Interior.ColorIndex = 10
      Case 3
          .Interior.ColorIndex = 5
      Case 4
          .Interior.ColorIndex = 18
      Case 5
          .Interior.ColorIndex = 30
      Case 6
          .Interior.ColorIndex = 30
      Case Else
          .Interior.ColorIndex = xlNone
    End Select

    End With

End Sub


Als je deze code gebruikt, dan kan je je dropdownlist koppelen aan een macro (rechtermuisknop en voila). Koppel hem aan bovenstaande macro. Wat gebeurd er: de macro wordt elke keer aangeroepen als je een selectie maakt!

[ Voor 6% gewijzigd door BtM909 op 10-04-2003 11:12 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • pea992
  • Registratie: November 2000
  • Laatst online: 02-02-2023
_/-\o_
Geweldig, werkt vlekkeloos!
je credit blijft in de code ;)
hartelijk bedankt!

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

En je hebt niet eens het nadeel dat je pagina steeds 1/10 van een seconde freezed door die change handler....

Succes

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1