• 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.

Macro traag

  • Onderwerp starter Onderwerp starter AABE
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

AABE

Gebruiker
Lid geworden
4 mrt 2008
Berichten
104
Geacht forum,

onderstaande code gebruik ik om een lay-out van een excelsheet op te bouwen.
Echter het duurt circa 15 seconden voordat hij klaar is.
Weten jullie een snellere manier?

Aantal gebruikte kolommen in wsc = 100

mvg,

Aat


Code:
Sub Test()

With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .calculation = xlCalculationManual
    .DisplayAlerts = False
End With


Set wsc = Sheets("Tracker")
Set wsu = Sheets("Table")

For Each r In wsc.Rows(2).SpecialCells(xlCellTypeConstants)
    Set C = wsu.Range("A1:A120").Find(r, LookIn:=xlFormulas, Lookat:=xlWhole)
    If Not C Is Nothing Then
        If C.Offset(0, getcol - 1) = "x" Then
            
            If C.Offset(0, 3) = "l" Then
                wsc.Columns(r.Column).HorizontalAlignment = xlLeft
            ElseIf C.Offset(0, 3) = "c" Then
                wsc.Columns(r.Column).HorizontalAlignment = xlCenter
            ElseIf C.Offset(0, 3) = "r" Then
                wsc.Columns(r.Column).HorizontalAlignment = xlRight
            End If
            
            If C.Offset(0, 2) = "d" Then
                wsc.Columns(r.Column).NumberFormat = "dd-mm-yy"
            ElseIf C.Offset(0, 2) = "dt" Then
                wsc.Columns(r.Column).NumberFormat = "dd-mm-yy h:mm"
            ElseIf C.Offset(0, 2) = "n" Then
                wsc.Columns(r.Column).NumberFormat = "#,##0"
            ElseIf C.Offset(0, 2) = "n2" Then
                wsc.Columns(r.Column).NumberFormat = "#,##0.00"
            ElseIf C.Offset(0, 2) = "t" Then
                wsc.Columns(r.Column).NumberFormat = "General"
            End If
        
        Else
            wsc.Columns(r.Column).ColumnWidth = 0
        End If
    End If
Next

With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .calculation = xlCalculationAutomatic
    .DisplayAlerts = True
End With

End Sub
 
Wat je zou kunnen proberen is de If .. ElseIf constructie te vervangen door een Select .. Case constructie.

'k Heb het idee dat dat minder zwaar is.
 
Wat je zou kunnen proberen is de If .. ElseIf constructie te vervangen door een Select .. Case constructie.

'k Heb het idee dat dat minder zwaar is.

Ok... gaan we proberen... bedankt....
 
De macro is vooral ook erg traag omdat je veel zoekfuncties gebruikt.
Wellicht is dat (gedeeltelijk) aan te passen door voorwaardelijke opmaak te gebruiken.

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan