Hallo Edmondo,
dit voorbeeldbestand schept veel duidelijkheid.
Een eerste fout waardoor de macro niets deed is dat je heel werk op het Tabblad "Eneco" staat, en in je macro verwijs je naar Blad1.
Een tabblad heeft 2 mogelijke namen:
1- Blad1, Blad2, Blad3 enzovoorts. Deze namen kan je niet wijzigen, ze worden toegekend bij het aanmaken van een werkblad. In een macro verwijs je er naar met
Blad1!.Range.... (dus het blad+nr+uitroepteken, punt, en geen haakjes)
2- Je geeft een werkblad een eigen naam, zoals Eneco. Deze namen kan je wijzigen, maar je moet ze ook in je macro aanpassen en/of wijzigen als werkblad-naam. In een macro verwijs je er naar met
Sheets("Eneco").Range... (dus de opdracht Sheets, haakje open, dubbel aanhalingsteken, naam van het werkblad, dubbel aanhalingsteken, haakje dicht, punt, en de rest van de code,bvb Range....
Wat heb jij gedaan (om het moeilijker te maken
), je hebt Blad1 benoemd als Eneco, Blad2 benoemd als Blad1, Blad2 benoemd als blad3 enz .... Dat maakt het natuurlijk verwarrend als je macro's gaat schrijven.
Blad1 in jou werkboek is in feite Blad2!
Als je hier in je code verwijst naar Blad1! is er nog geen probleem, omdat Blad Eneco de naam is van Blad1!
Waarom werkt die code dan niet. Wel, je macro wordt getriggerd op het moment dat je het werkboek opent. Als je daarna een wijziging aanbrengt aan
cel B13 gebeurt er niets meer met die code. Sla je daarna het werkboek op, en open je het opnieuw, dan zal de code uitgevoerd worden en zie je dat de aanpalende cellen gekleurd zijn.
Het kan eenvoudiger.
Plaats je code terug in je (Eneco)-Blad1 in de Editor en hernoem de macro naar:
Private Sub Worksheet_Change(ByVal Target As Range)
' Controleer of de veranderde cel binnen een specifiek bereik ligt
If Not Intersect(Target, Me.Range("B13")) Is Nothing Then
' Voeg hier de actie toe die je wilt uitvoeren
End If
End Sub
De code:
If Sheets("Eneco").Range("B13") = "nvt" Then
Sheets("Eneco").Range("C13:N13").Interior.ColorIndex = 15
Sheets("Eneco").Range("C14:N14").Interior.ColorIndex = 15
Sheets("Eneco").Range("C15:N15").Interior.ColorIndex = 15
Else
'Nu cellen wit kleuren
Sheets("Eneco").Range("C13:N13").Interior.ColorIndex = 2
Sheets("Eneco").Range("C14:N14").Interior.ColorIndex = 2
Sheets("Eneco").Range("C15:N15").Interior.ColorIndex = 2
End If
kan je korter maken door de bereiken op 1 rij op te vangen door:
If Sheets("Eneco").Range("B13") = "nvt" Then
Sheets("Eneco").Range("C13:N15").Interior.ColorIndex = 15
Else
Sheets("Eneco").Range("C13:N15").Interior.ColorIndex = 2
End If
In bijlage, jou werkboek met de aangepaste code.
Laat maar horen als iets niet duidelijk is, we helpen je graag.
SoftAid