1: een bereik i.p.v. een enkele cel:
Gebruik i.p.v. regel 8 in bovenstaand voorbeeld:
Visual Basic:
1
| If Not (Intersect(Target, ActiveSheet.Range("B1:B7")) Is Nothing) Then |
De functie intersect zoekt naar cellen die én in Target én in B1:B7 zitten. Zijn die er (het resultaat is niet "Nothing") ga dan door.
2: Meer dan 1 conditie: Nee, dat gaat niet zo. Als jij een cel veranderd gaat Excel op zoek naar de functie Worksheet_Change. Daar mag er maar 1 per tabblad van zijn.
Wat wel kan is meer dan 1 if lus in de functie zetten:
Visual Basic:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
| Private Sub Worksheet_Change(ByVal Target As Range)
'dit is een functie binnen de visual basic omgeving van Excel. Rag op Alt-F11
'en plak deze code in het blad waar je je "voorwaardelijke opmaak" wilt zien.
'De functie Worksheet_change wordt aangeroepen als er iets
'verandert op het tabblad. Target is dan een verwijzing naar de
'cel die verandert.
If Not (Intersect(Target, Union(ActiveSheet.Range("B1:B7"),ActiveSheet.Range("A1"))) Is Nothing) Then
'als de cel in A1 of in B1:B7 valt, dan moet
'het onderstaande gebeuren.
Select Case Target.Value 'zoek hieronder de "case" die
'gelijk is aan de waarde van target
Case 1
Target.Font.Color = 255 'rood
Case 2
Target.Font.Color = 65280 'groen
Case 3
Target.Font.Color = 16711935 'roze
Case "Pietje"
Target.Font.Color = 6697881 'paars
Case Else 'in alle andere gevallen: maak de tekenkleur weer normaal
Target.Font.Color = 0 'automatisch, meestal zwart
End Select
End If
If Target.Address = ActiveSheet.Range("E11").Address Then
'als het adres van de cel gelijk is aan het adres van de cel E11, dan moet
'het onderstaande gebeuren.
Select Case Target.Value 'zoek hieronder de "case" die
'gelijk is aan de waarde van target
Case "test"
Target.Font.Color = 255 'rood
Case "andere test"
Target.Font.Color = 65280 'groen
Case "en nog wat"
Target.Font.Color = 16711935 'roze
Case "Pietje"
Target.Font.Color = 6697881 'paars
Case Else 'in alle andere gevallen: maak de tekenkleur weer normaal
Target.Font.Color = 0 'automatisch, meestal zwart
End Select
End If
End Sub |
(let op de Union in regel 8 overigens, zo kan je dezelfde regel laten gelden voor A1 en B1:B7)
Regels 8-24 regelen het gedrag van cel A1 en B1:B7, regel 25-eind van cel E11. En zo kan je rustig doorgaan.
Overigens:
als je nieuwe kleuren zoekt, andere dingen wilt dan tekenkleur etc., neem dan een macro op waarin je dat doet.
Bijvoorbeeld:
Visual Basic:
1
2
3
4
5
6
7
| Range("E1").Select
Selection.Font.ColorIndex = 7
Range("E2").Select
With Selection.Interior
.ColorIndex = 50
.Pattern = xlSolid
End With |
zet de tekenkleur van E1 op paars en de achtergrondkleur van e2 op ranzig groen.
Target.Font.ColorIndex = 7 en
Target.Interior.ColorIndex = 50 doen dat dan in je macro.