• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kan deze macro sneller?

Status
Niet open voor verdere reacties.

mike564

Gebruiker
Lid geworden
11 dec 2015
Berichten
83
Goedemorgen,

Een tijdje terug ben ik op dit forum heel erg geholpen met een macro, welke ik daarna verder ben gaan uitbreiden.
Nu vraag ik me af of deze code sneller zou kunnen door bijvoorbeeld het instellen van een range, of dat er een andere manier is om deze sneller te kunnen laten lopen.
Zelf is het mij met het instellen van een range niet helemaal goed gelukt en ik hoop dat jullie mij verder kunnen helpen.
Dit is de code:
Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
With CommandButton1
    Select Case .Caption
        Case "Zichtbaar maken"
            For Each cl In Columns(8).SpecialCells(-4123)
                If cl = "A" Or cl.Offset(0, -6) = "" Then cl.Offset(0).Resize(4, 1).EntireRow.Hidden = False
            Next cl
            .Caption = "Zichtbaar maken"
   End Select
End With
End Sub
Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
With CommandButton2
    Select Case .Caption
        Case "Vernieuwen"
            For Each cl In Columns(8).SpecialCells(-4123)
                If cl = "L" Or cl = "FA" Or cl = "MA" Then cl.Offset(0).Resize(4, 1).EntireRow.Hidden = False
                If cl = "A" Or cl.Offset(0, -6) = "" Then cl.Offset(0).Resize(4, 1).EntireRow.Hidden = True
            Next cl
                .Caption = "Vernieuwen"
   End Select
End With
End Sub

Mvg,
Mike
 
Waarom plaats je niet de volledige code? Je bent de macro niet aan het uitbreiden maar aan het slopen.;) De select case doet er nu niet meer toe?

Om het verbergen of zichtbaar maken van rijen te versnellen kan je gebruik maken van een Union. Niet getest omdat er geen voorbeeldbestandje te vinden is zou ik er zoiets van maken
Code:
Private Sub CommandButton1_Click()
Dim r As Range
Application.ScreenUpdating = False
For Each cl In Columns(8).SpecialCells(-4123)
    If cl = "A" Or cl.Offset(0, -6) = "" Then
        If r Is Nothing Then Set r = cl.Resize(4, 1) Else Set r = Union(r, cl.Resize(4, 1))
    End If
Next cl
If Not r Is Nothing Then r.EntireRow.Hidden = False
End Sub
 
Laatst bewerkt:
Ik heb een kleine aanpassing gemaakt (na de tip van VenA) waardoor het verloop naar mijn idee al een klein stukje sneller gaat, dit is echter wel zonder de Union functie.
Ik zou nu alleen graag willen weten hoe de Union functie precies werkt, aangezien ik het nog niet goed voor elkaar krijg. Ik heb nu wel een testbestandje toegevoegd met de werkende macro (waar ik overigens al heel tevreden mee ben!), alleen dus zonder de Union functie
 

Bijlagen

  • Testbestand 1.xlsm
    97,9 KB · Weergaven: 32
Laatst bewerkt:
Mike, probeer deze eens:
 

Bijlagen

  • Testbestand met union (2.xlsb
    63,1 KB · Weergaven: 43
Laatst bewerkt:
Sylvester, heb hem getest en ben tot nu toe zeer tevreden! Hij werkt eigenlijk zo snel als de klik zelf, zelfs op oudere pc's.
Heel erg bedankt!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan