Avatar billede tvc Seniormester
15. januar 2009 - 20:13 Der er 4 kommentarer og
1 løsning

Hvorfor kører denne VBA kode langsomt?

Hej

Er der en der kan hjælpe mig med at gøre nedenstående kode hurtigere. Den er pludselig blevet meget langsom (primært efter at jeg har anvendt vis udskrift efter åbning af filen).

'Indeks 1-5
Sub L15()
    Start
    Ark2.Range("b2") = "'1-5"
    Ark2.Range("a2") = 5
    Ark2.Range("IndexType") = 1
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks 1-6
Sub L16()
    Start
    Ark2.Range("b2") = "'1-6"
    Ark2.Range("a2") = 6
    Ark2.Range("IndexType") = 1
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks 1-10
Sub L110()
    Start
    Ark2.Range("b2") = "'1-10"
    Ark2.Range("a2") = 10
    Ark2.Range("IndexType") = 1
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks 1-12
Sub L112()
    Start
    Ark2.Range("b2") = "'1-12"
    Ark2.Range("a2") = 12
    Ark2.Range("IndexType") = 1
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks 12-1
Sub L121()
    Start
    Ark2.Range("b2") = "'12-1"
    Ark2.Range("a2") = 12
    Ark2.Range("IndexType") = 3
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks 1-15
Sub L115()
    Start
    Ark2.Range("b2") = "'1-15"
    Ark2.Range("a2") = 15
    Ark2.Range("IndexType") = 1
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks 1-20
Sub L120()
    Start
    Ark2.Range("b2") = "'1-20"
    Ark2.Range("a2") = 20
    Ark2.Range("IndexType") = 1
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks 1-31
Sub L131()
    Start
    Ark2.Range("b2") = "'1-31"
    Ark2.Range("a2") = 31
    Ark2.Range("IndexType") = 1
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks 1-54
Sub L154()
    Start
    Ark2.Range("b2") = "'1-54"
    Ark2.Range("a2") = 54
    Ark2.Range("IndexType") = 1
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks Jan-Dec
Sub JanDec()
    Start
    Ark2.Range("b2") = "Jan-Dec"
    Ark2.Range("a2") = 12
    Ark2.Range("IndexType") = 4
    RowHeight
    ColumnsShow
    Font
End Sub

'Indeks A-Å
Sub AÅ()
    Start
    Ark2.Range("b2") = "A-Å"
    Ark2.Range("a2") = 20
    Ark2.Range("IndexType") = 2
    RowHeight
    ColumnsShow
    Font
End Sub

Sub RowHeight()

Ark3.Select

I = 1

For I = 1 To 54

With Ark3.Rows(I)
    .RowHeight = Range("H" & I).Value
End With

Next I

End Sub

Sub ColumnsShow()
    Ark3.Select
   
'Columnwidth

    Columns("B:E").ColumnWidth = Ark2.Range("ColumnWidthIndex").Value
    Columns("F:F").ColumnWidth = Ark2.Range("ColumnWidthText").Value
   
'Reset Hidden columns

    If Columns("B:B").EntireColumn.Hidden = False Then
        Columns("B:B").EntireColumn.Hidden = True
    End If
    If Columns("C:C").EntireColumn.Hidden = False Then
        Columns("C:C").EntireColumn.Hidden = True
    End If
    If Columns("D:D").EntireColumn.Hidden = False Then
        Columns("D:D").EntireColumn.Hidden = True
    End If
    If Columns("E:E").EntireColumn.Hidden = False Then
        Columns("E:E").EntireColumn.Hidden = True
    End If

'Hide columns

    If Ark2.Range("IndexType").Value = 1 Then
        Columns("B:B").EntireColumn.Hidden = False
    End If
    If Ark2.Range("IndexType").Value = 2 Then
        Columns("C:C").EntireColumn.Hidden = False
    End If
    If Ark2.Range("IndexType").Value = 3 Then
        Columns("D:D").EntireColumn.Hidden = False
    End If
    If Ark2.Range("IndexType").Value = 4 Then
        Columns("E:E").EntireColumn.Hidden = False
    End If
   
End Sub


'Font settings

Sub Font()

    Ark3.Columns("B:E").Select
    With Selection.Font
        .Name = "Arial"
        .Size = Ark2.Range("FontIndex").Value
    End With
   
 
    Ark3.Columns("F:F").Select
    With Selection.Font
        .Name = "Arial"
        .Size = Ark2.Range("FontText").Value
    End With

    Ark3.Range("F1").Select
     
    Application.ScreenUpdating = True
End Sub

Sub Start()
    Application.ScreenUpdating = False
End Sub
Avatar billede kabbak Professor
15. januar 2009 - 20:31 #1
du skal slette dine sideskift inden du kører koden

det gøres med

Cells.PageBreak = xlPageBreakNone

sæt den øverst i koden.
Men du skriver ikke hvilket ark, så det må du selv sætte foran cells
Avatar billede tvc Seniormester
15. januar 2009 - 20:42 #2
Det virker desværre ikke. Den står fortsat og tænker meget langtid i min For-next funktion.
Avatar billede kabbak Professor
15. januar 2009 - 20:57 #3
prøv at rette denne

I = 1

For I = 1 To 54

With Ark3.Rows(I)
    .RowHeight = Range("H" & I).Value
End With

Next I


til



Ark3.Cells.PageBreak = xlPageBreakNone

I = 1
With Ark3
For I = 1 To 54
    .Rows(I).RowHeight = .Range("H" & I).Value
Next I
End With
Avatar billede tvc Seniormester
15. januar 2009 - 21:37 #4
Det ser heller ikke ud til at hjælpe.

Jeg har nu prøvet at kopierer (med funktionen fylt/kopier) alle tre ark til en ny fil. Nu får jeg så bare en fejl 400?
Avatar billede tvc Seniormester
02. marts 2009 - 17:34 #5
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester