robinvdveeken
Gebruiker
- Lid geworden
- 7 sep 2010
- Berichten
- 84
Geachte veelwetende,
Ik heb een dynamische invullijst gemaakt en deze word hier binnen het bedrijf inmiddels veelvuldig gebruikt. Door z'n eigen succes is deze lijst steeds verder gegroeit.
In kolom E t/m V worden voorwaarden geplaatst en afhankelijk wat er in de lijst zelf, kolom A t/m D word ingevuld worden er rijen verborgen.
De gebruikte rijen in de oorspronkelijke sheet zijn 140 t/m 750
De code is:
Bij een verandering duurt het nu zo'n 11 seconde voor de wijziging is doorgevoerd.
Kan dit sneller, wat moet er anders?
Alvast bedankt.
Groeten,
Robin
Ik heb een dynamische invullijst gemaakt en deze word hier binnen het bedrijf inmiddels veelvuldig gebruikt. Door z'n eigen succes is deze lijst steeds verder gegroeit.
In kolom E t/m V worden voorwaarden geplaatst en afhankelijk wat er in de lijst zelf, kolom A t/m D word ingevuld worden er rijen verborgen.
De gebruikte rijen in de oorspronkelijke sheet zijn 140 t/m 750
De code is:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False 'Voorkomt het knipperen van het scherm tijdens update
'Declaraties:
Dim Rij As Integer, Kolom As Integer, Cel As Range
Dim DoelCellen As Range
Dim EindRij As Integer, EindKolom As Integer, TekstB As String, TekstC As String
'Beperk de Range tot de gebruikte Rijen en kolommen:
EindRij = 700 'Sheets("Front").UsedRange.Rows.Count
EindKolom = Sheets("Front").UsedRange.Columns.Count - 1
'Code:
Set DoelCellen = Cells(1, 100)
For Kolom = 6 To EindKolom Step 3
Set DoelCellen = Union(DoelCellen, Range(Cells(140, Kolom), Cells(EindRij, Kolom)))
Next Kolom
Set DoelCellen = DoelCellen.SpecialCells(xlCellTypeConstants)
For Each Cel In DoelCellen
If Rows(Cel.Row).Hidden = False Then
Rij = Cel.Row
TekstB = LCase(Cells(Rij, 2)): TekstC = LCase(Cells(Rij, 3))
If Cel.Offset(0, -1) = "<>" Then
Rows(Cel.Offset(0, 1).Value).Hidden = LCase(Cel) <> TekstB And LCase(Cel) <> TekstC
Else
Rows(Cel.Offset(0, 1).Value).Hidden = (LCase(Cel) = TekstB Or LCase(Cel) = TekstC)
End If
End If
Next Cel
Application.ScreenUpdating = True 'Update het scherm na verandering
End Sub
Bij een verandering duurt het nu zo'n 11 seconde voor de wijziging is doorgevoerd.
Kan dit sneller, wat moet er anders?
Alvast bedankt.
Groeten,
Robin
Bijlagen
Laatst bewerkt: