Beste Excellers,
Sinds vandaag 'loopt' m'n excelbestand erg traag. Ik heb een lijst die gevuld wordt van kolom A:AN. In kolom AN, vanaf rij 4 en verder, staat de status van ieder "dossier" [*lees: rij]
Iedere cel in kolom AN vanaf rij 4 is gevalideerd. Men heeft de keuze uit 'In Behandeling', 'Hold' en 'Afgehandeld'. Ze krijgen kleur passend bij hun status (zie code hieronder).
De Lijst bestaat uit een titelblok (Rij 1 t/m Rij 3) En vanaf Rij 4 een ingevulde lijst.
Een groot deel van een Rij uit de lijst tussen kolom A en AN hebben validatielijstjes. Iedere keer als ik een cel in een rij invul door een keuze te maken uit zo'n lijstje, duurt het veel te lang voordat ik een volgende cel kan invullen.
Komt dit misschien door onderstaande code? Zo ja, kan dit sneller? En kan er niet alleen gecontroleerd worden of er iets gewijzigd is in kolom AN?, zodat de code niet onnodig de hele lijst op iedere cel controleerd of er iets gewijzigd is?
Veel succes met de uitdaging?!
Zijn er nog onduidelijkheden? Dan hoor ik dat graag!
Met vriendelijke groet,
McMacro
Sinds vandaag 'loopt' m'n excelbestand erg traag. Ik heb een lijst die gevuld wordt van kolom A:AN. In kolom AN, vanaf rij 4 en verder, staat de status van ieder "dossier" [*lees: rij]
Iedere cel in kolom AN vanaf rij 4 is gevalideerd. Men heeft de keuze uit 'In Behandeling', 'Hold' en 'Afgehandeld'. Ze krijgen kleur passend bij hun status (zie code hieronder).
De Lijst bestaat uit een titelblok (Rij 1 t/m Rij 3) En vanaf Rij 4 een ingevulde lijst.
Een groot deel van een Rij uit de lijst tussen kolom A en AN hebben validatielijstjes. Iedere keer als ik een cel in een rij invul door een keuze te maken uit zo'n lijstje, duurt het veel te lang voordat ik een volgende cel kan invullen.
Komt dit misschien door onderstaande code? Zo ja, kan dit sneller? En kan er niet alleen gecontroleerd worden of er iets gewijzigd is in kolom AN?, zodat de code niet onnodig de hele lijst op iedere cel controleerd of er iets gewijzigd is?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each x In Range("AN4:AN" & Range("AN1000").End(xlUp).Row)
If x = "In Behandeling" Then
Application.EnableEvents = False
ActiveSheet.Unprotect password:="xxxx"
Range("A" & x.Row, "AD" & x.Row).Interior.ColorIndex = 37 'Blauw
Range("AE" & x.Row, "AJ" & x.Row).Interior.ColorIndex = 15 'Grijs
Range("AK" & x.Row, "AN" & x.Row).Interior.ColorIndex = 37 'Blauw
ActiveSheet.Protect password:="xxxx"
Application.EnableEvents = True
ElseIf x = "HOLD" Then
Application.EnableEvents = False
ActiveSheet.Unprotect password:="xxxx"
Range("A" & x.Row, "AD" & x.Row).Interior.ColorIndex = 3 'Rood
Range("AE" & x.Row, "AJ" & x.Row).Interior.ColorIndex = 15 'Grijs
Range("AK" & x.Row, "AN" & x.Row).Interior.ColorIndex = 3 'Rood
ActiveSheet.Protect password:="xxxx"
Application.EnableEvents = True
ElseIf x = "Afgehandeld" Then
Application.EnableEvents = False
ActiveSheet.Unprotect password:="xxxx"
Range("A" & x.Row, "AD" & x.Row).Interior.ColorIndex = 43 'Groen
Range("AE" & x.Row, "AJ" & x.Row).Interior.ColorIndex = 15 'Grijs
Range("AK" & x.Row, "AN" & x.Row).Interior.ColorIndex = 43 'Groen
ActiveSheet.Protect password:="xxxx"
Application.EnableEvents = True
ElseIf x = "" Then
Application.EnableEvents = False
ActiveSheet.Unprotect password:="xxxx"
Range("A" & x.Row, "AN" & x.Row).Interior.ColorIndex = 15 'Grijs
ActiveSheet.Protect password:="xxxx"
Application.EnableEvents = True
End If
Application.EnableEvents = True
Next
End Sub
Veel succes met de uitdaging?!
Zijn er nog onduidelijkheden? Dan hoor ik dat graag!
Met vriendelijke groet,
McMacro