Avatar billede rabitjosph Juniormester
28. april 2007 - 19:17 Der er 16 kommentarer og
1 løsning

Hurtig makro

Hvad er det man skal skrive hvis
makro skal køre lidt hurtigere ?
Avatar billede kabbak Professor
28. april 2007 - 22:23 #1
Det kommer helt and på koden, der er ikke en kommando der lige gør koden hurtigere, det er en fin trimning af koden der gør det.


Men hvis det er noget der kan ses på arket, er der dise der gør koden hurtigere

Application.ScreenUpdating = False

' kode

Application.ScreenUpdating = True
Avatar billede word-hajen Nybegynder
28. april 2007 - 22:58 #2
Som kabbak skriver, er det fintrimning af koden, der kan gøre forskellen. Noget af det, som jeg har set, at du bruger forholdsvis meget i kode til Excel, er Select; dvs. at du lader din cursor "hoppe rundt" i dine celler/ark. Det kan ofte gøres på anden måde, hvorved du rent tidsmæssigt sparer, at din cursor skal flyttes. Det er selvfølgelig en lille ting, men hvis du er ude på at få "tids-optimeret" din kode, kan det være en af stederne.
Avatar billede rabitjosph Juniormester
29. april 2007 - 07:00 #3
Ja, i har ret, men det er kun noget af svaret

Jeg henter ca. 250000 celle-værdier ved slå op funktion, i starten køre min makro meget hurtigt, men når jeg er ved at være oppe på bare ca. 40000 celler går det meget langsomt.

Hvis jeg bruger Application.ScreenUpdating = False
Kan jeg ikke se det hjælper, så jeg har åbenbart et andet problem.

Er det min memory som driller mig, at jeg i min makro skal tage højde for om den skal cleres eller hvad ved jeg ?
Avatar billede kabbak Professor
29. april 2007 - 07:56 #4
Må vi se den del af koden der slår op, løsningen kan være at læse slå op området ind i en variabel og så loope igennem den, det er hurtigere end at kikke på celler.
Avatar billede rabitjosph Juniormester
29. april 2007 - 08:52 #5
Hej kabbak

Jeg ved godt det ikke er det bedste kode, men det må du bære over med (-:
det svare lidt til at binde en bil sammen med sejlgarn, men den kan da køre



Dim i As Integer  ' Bruges til at hen x sider
Dim antalsider As Double

'
        With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.Vare.dk/search.aspx?sort=El-a&type=&min=0&max=400&Hvor=" _
        , Destination:=Range("A1"))
        .Name = _
        "search.aspx?sort=El-a&type=El&&maxHvor="
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False
    End With
    Rows("1:2").Select
    Selection.Delete Shift:=xlUp 'slet de 2 første linier
   
    ' Find ud af hvor mange sider
  Range("B1").Select
    ActiveCell.Replace What:="0-20 af ialt", Replacement:="", LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False
 
   
    ActiveCell.Replace What:="boliger", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
 
  'Range("B1").Select ' flyt antal emner 1 celle til højre
  Range("B1").Select
    Selection.Copy
    Range("E1").Select
    ActiveSheet.Paste
    Range("B1").Select
 
 
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "Antal sider"
    Range("B1").Select
    Selection.NumberFormat = "0.00"
    ActiveCell.FormulaR1C1 = "=R[0]c[3]/20"
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "=ROUNDUP(RC[-1],0)" ' bruges til at runde op feks. 4.11 til 5
 
    Range("c1").Select
    'Næste 3 linie omsætter x/25 til celle 2 så det er læsebart
    Selection.Copy
    Range("d1").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Range("A1").Select
    Application.CutCopyMode = False
   
   

    antalsider = Range("d1").Value ' antalsider sættes til det antal der findes ved opslaget
   
  Range("A1").Select
    ActiveCell.FormulaR1C1 = "Hvilken siden den er i gang med"
    Range("d1").Select
      ActiveCell.FormulaR1C1 = antalsider ' kun en test på hvad antalsider er sat til
     
   
    Columns("A:K").Select
    With Selection ' Opløser celle hvor postnummer er i til en enkelt celle
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With
   
      Range("A2:A40").Select 'Indsætter celler for El
    Selection.Insert Shift:=xlToRight
    Selection.ColumnWidth = 17.71
    'Range("A1").Select
   
   
    'Columns("A:A").Select ' Indsætter en kolonne A
    'Selection.Insert Shift:=xlToRight
   
   
   
    Dim C As Range

Range("b3", Range("b3").End(xlDown)).Select
For Each C In Selection
  If IsNumeric(Left(C, 1)) Then
  C.Copy C.Offset(1, -1)
    Rows(C.Row).Select  ' Slet rækken som active cell står på
        Selection.Delete
      Range("b2", Range("b2").End(xlDown)).Select

  Else
    C.Offset(-1, -1).Copy C.Offset(0, -1)
    End If
    Next
   
    Range("A3:K22").Select ' Flyt data over på ark 1
    Selection.Copy
    Sheets("Ark1").Select
    Columns("A:B").ColumnWidth = 35
    Columns("C:C").ColumnWidth = 3.29
    Columns("D:D").ColumnWidth = 13.71
    Columns("E:E").ColumnWidth = 6.14
    Columns("F:F").ColumnWidth = 8.57
    Columns("G:G").ColumnWidth = 4.29
    Columns("H:H").ColumnWidth = 5.86
    Columns("I:I").ColumnWidth = 4.29
    Columns("J:J").ColumnWidth = 4.43
    Columns("K:K").ColumnWidth = 6.1
    Selection.Rows.AutoFit
   
       
    Range("A2").Select
   
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
        , Transpose:=False
   
 
    Range("A22").Select
    Sheets("Ark2").Select
  Rows("2:37").Select
    Selection.Delete Shift:=xlUp
    Columns("f:f").Select
    Selection.ColumnWidth = 10
    Range("A2").Select
   
   
     
     
    For i = 2 To antalsider ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  Range("a1").Select
 
ActiveCell.FormulaR1C1 = i ' hvilken side skal den til at hente som står i celle A3

' Nu starter vi med side 2

'


With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.vare.dk/search.aspx?sort=El-a&Mål=Alle&min=0&max=400&type=El&page=" & CStr(i) _
        , Destination:=Range("A1"))
        .Name = _
        "search.aspx?sort=El-a&Mål=Alle&min=0&max=400&type=EL&page=" & CStr(i) & q = bygget
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False
    End With
    Rows("2:4").Select
    Selection.Delete Shift:=xlUp 'slet de 2 første linier

    Columns("A:K").Select
    With Selection ' Opløser celle hvor El er i til en enkelt celle
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With
   
        Range("A2:A40").Select 'Indsætter celler for Arkiv
    Selection.Insert Shift:=xlToRight
    Selection.ColumnWidth = 22.71
    'Range("A1").Select
     
   
     
   
    Dim C1 As Range

Range("b2", Range("b2").End(xlDown)).Select
For Each C1 In Selection
  If IsNumeric(Left(C1, 1)) Then
  C1.Copy C1.Offset(1, -1)
    Rows(C1.Row).Select  ' Slet rækken som active cell står på
        Selection.Delete
      Range("b2", Range("b2").End(xlDown)).Select

  Else
    C1.Offset(-1, -1).Copy C1.Offset(0, -1)
    End If
    Next
   
    Range("A2:K22").Select ' Flyt data over på ark 1
    Selection.Copy
    Sheets("Ark1").Select
    'Range("A2").Select
   
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
        , Transpose:=False
   
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
   
    Sheets("Ark2").Select
 
  Rows("1:37").Select
    Selection.Delete Shift:=xlUp
    Columns("f:f").Select
    Selection.ColumnWidth = 17.71
    Range("A2").Select
 
Next i
   
    ActiveWorkbook.Save
Avatar billede kabbak Professor
29. april 2007 - 09:18 #6
Nu har jeg fjernet en del Select, prøv at teste

  Dim i As Integer  ' Bruges til at hen x sider
    Dim antalsider As Double

    '
    With ActiveSheet.QueryTables.Add(Connection:= _
                                    "URL;http://www.Vare.dk/search.aspx?sort=El-a&type=&min=0&max=400&Hvor=" _
      , Destination:=Range("A1"))
        .Name = _
        "search.aspx?sort=El-a&type=El&&maxHvor="
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False
    End With
    Rows("1:2").Delete Shift:=xlUp    'slet de 2 første linier

    ' Find ud af hvor mange sider
    Range("B1").Select
    ActiveCell.Replace What:="0-20 af ialt", Replacement:="", LookAt:=xlPart _
                    , SearchOrder:=xlByRows, MatchCase:=False


    ActiveCell.Replace What:="boliger", Replacement:="", LookAt:=xlPart, _
                      SearchOrder:=xlByRows, MatchCase:=False

    'Range("B1").Select ' flyt antal emner 1 celle til højre

    Range("B1").Copy Range("B1").offest(0, 1)
    Range("A1") = "Antal sider"
    Range("B1").NumberFormat = "0.00"
    Range("B1").FormulaR1C1 = "=R[0]c[3]/20"
    Range("C1").FormulaR1C1 = "=ROUNDUP(RC[-1],0)"    ' bruges til at runde op feks. 4.11 til 5
    Range("c1").Copy
    'Næste 3 linie omsætter x/25 til celle 2 så det er læsebart
    Range("d1").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                          False, Transpose:=False
    Application.CutCopyMode = False

    antalsider = Range("d1").Value    ' antalsider sættes til det antal der findes ved opslaget
    Range("A1") = "Hvilken siden den er i gang med"
    Range("d1").FormulaR1C1 = antalsider    ' kun en test på hvad antalsider er sat til


 
    With Columns("A:K")    ' Opløser celle hvor postnummer er i til en enkelt celle
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With

    Range("A2:A40").Select    'Indsætter celler for El
    Selection.Insert Shift:=xlToRight
    Selection.ColumnWidth = 17.71
    'Range("A1").Select


    'Columns("A:A").Select ' Indsætter en kolonne A
    'Selection.Insert Shift:=xlToRight



    Dim C As Range

    Range("b3", Range("b3").End(xlDown)).Select
    For Each C In Selection
        If IsNumeric(Left(C, 1)) Then
            C.Copy C.Offset(1, -1)
            Rows(C.Row).Select  ' Slet rækken som active cell står på
            Selection.Delete
            Range("b2", Range("b2").End(xlDown)).Select

        Else
            C.Offset(-1, -1).Copy C.Offset(0, -1)
        End If
    Next

    Range("A3:K22").Copy    ' Flyt data over på ark 1
    Sheets("Ark1").Select
    Columns("A:B").ColumnWidth = 35
    Columns("C:C").ColumnWidth = 3.29
    Columns("D:D").ColumnWidth = 13.71
    Columns("E:E").ColumnWidth = 6.14
    Columns("F:F").ColumnWidth = 8.57
    Columns("G:G").ColumnWidth = 4.29
    Columns("H:H").ColumnWidth = 5.86
    Columns("I:I").ColumnWidth = 4.29
    Columns("J:J").ColumnWidth = 4.43
    Columns("K:K").ColumnWidth = 6.1
    Selection.Rows.AutoFit


    Range("A2").Select
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
                        , Transpose:=False

    Sheets("Ark2").Select
    Rows("2:37").Delete Shift:=xlUp
    Columns("f:f").ColumnWidth = 10
    Range("A2").Select


    For i = 2 To antalsider    ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        Range("a1").Select

        ActiveCell.FormulaR1C1 = i    ' hvilken side skal den til at hente som står i celle A3

        ' Nu starter vi med side 2

        '


        With ActiveSheet.QueryTables.Add(Connection:= _
                                        "URL;http://www.vare.dk/search.aspx?sort=El-a&Mål=Alle&min=0&max=400&type=El&page=" & CStr(i) _
          , Destination:=Range("A1"))
            .Name = _
            "search.aspx?sort=El-a&Mål=Alle&min=0&max=400&type=EL&page=" & CStr(i) & q = bygget
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = False
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlAllTables
            .WebFormatting = xlWebFormattingAll
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .Refresh BackgroundQuery:=False
        End With
        Rows("2:4").Delete Shift:=xlUp    'slet de 2 første linier

        With Columns("A:K")    ' Opløser celle hvor El er i til en enkelt celle
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlBottom
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .ShrinkToFit = False
            .MergeCells = False
        End With

        'Indsætter celler for Arkiv
        Range("A2:A40").Insert Shift:=xlToRight
        Range("A2:A40").ColumnWidth = 22.71
        'Range("A1").Select

        Dim C1 As Long
        Dim RW As Long
        RW = Range("b2").End(xlDown).Row

        Range("b2", Range("b2").End(xlDown)).Select
        For C1 = RW To 2 Step -1
            If IsNumeric(Left(C1, 1)) Then
                Cells(C1, "B").Copy Cells(C1, "B").Offset(1, -1)
                Rows(C1).Delete  ' Slet rækken som active cell står på
                '  Range("b2", Range("b2").End(xlDown)).Select " KABBAK" skal ikke bruges Sløver
            Else
                Cells(C1, "B").Offset(-1, -1).Copy Cells(C1, "B").Offset(0, -1)
            End If
        Next

        Range("A2:K22").Copy    ' Flyt data over på ark 1

        Sheets("Ark1").Select
        'Range("A2").Select

        Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
                            , Transpose:=False

        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Select

        Sheets("Ark2").Select

        Rows("1:37").Delete Shift:=xlUp
        Columns("f:f").ColumnWidth = 17.71
        Range("A2").Select

    Next i

    ActiveWorkbook.Save
Avatar billede kabbak Professor
29. april 2007 - 09:26 #7
Jeg havde overset noget, skulle være rigtig nu


    Dim i As Integer  ' Bruges til at hen x sider
    Dim antalsider As Double

    '
    With ActiveSheet.QueryTables.Add(Connection:= _
                                    "URL;http://www.Vare.dk/search.aspx?sort=El-a&type=&min=0&max=400&Hvor=" _
      , Destination:=Range("A1"))
        .Name = _
        "search.aspx?sort=El-a&type=El&&maxHvor="
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = False
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingAll
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False
    End With
    Rows("1:2").Delete Shift:=xlUp    'slet de 2 første linier

    ' Find ud af hvor mange sider
    Range("B1").Select
    ActiveCell.Replace What:="0-20 af ialt", Replacement:="", LookAt:=xlPart _
                    , SearchOrder:=xlByRows, MatchCase:=False


    ActiveCell.Replace What:="boliger", Replacement:="", LookAt:=xlPart, _
                      SearchOrder:=xlByRows, MatchCase:=False

    'Range("B1").Select ' flyt antal emner 1 celle til højre

    Range("B1").Copy Range("B1").offest(0, 1)
    Range("A1") = "Antal sider"
    Range("B1").NumberFormat = "0.00"
    Range("B1").FormulaR1C1 = "=R[0]c[3]/20"
    Range("C1").FormulaR1C1 = "=ROUNDUP(RC[-1],0)"    ' bruges til at runde op feks. 4.11 til 5
    Range("c1").Copy
    'Næste 3 linie omsætter x/25 til celle 2 så det er læsebart
    Range("d1").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
                          False, Transpose:=False
    Application.CutCopyMode = False

    antalsider = Range("d1").Value    ' antalsider sættes til det antal der findes ved opslaget
    Range("A1") = "Hvilken siden den er i gang med"
    Range("d1").FormulaR1C1 = antalsider    ' kun en test på hvad antalsider er sat til



    With Columns("A:K")    ' Opløser celle hvor postnummer er i til en enkelt celle
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With

    Range("A2:A40").Select    'Indsætter celler for El
    Selection.Insert Shift:=xlToRight
    Selection.ColumnWidth = 17.71
    'Range("A1").Select


    'Columns("A:A").Select ' Indsætter en kolonne A
    'Selection.Insert Shift:=xlToRight


    Dim C As Long
    Dim RW As Long
    RW = Range("b3").End(xlDown).Row

    For C = RW To 2 Step -1
        If IsNumeric(Left(Cells(C, "B"), 1)) Then
            Cells(C, "B").Copy Cells(C, "B").Offset(1, -1)
            Rows(C).Delete  ' Slet rækken som active cell står på


        Else
            Cells(C, "B").Offset(-1, -1).Copy Cells(C, "B").Offset(0, -1)
        End If
    Next

    Range("A3:K22").Copy    ' Flyt data over på ark 1
    Sheets("Ark1").Select
    Columns("A:B").ColumnWidth = 35
    Columns("C:C").ColumnWidth = 3.29
    Columns("D:D").ColumnWidth = 13.71
    Columns("E:E").ColumnWidth = 6.14
    Columns("F:F").ColumnWidth = 8.57
    Columns("G:G").ColumnWidth = 4.29
    Columns("H:H").ColumnWidth = 5.86
    Columns("I:I").ColumnWidth = 4.29
    Columns("J:J").ColumnWidth = 4.43
    Columns("K:K").ColumnWidth = 6.1
    Selection.Rows.AutoFit


    Range("A2").Select
    Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
                        , Transpose:=False

    Sheets("Ark2").Select
    Rows("2:37").Delete Shift:=xlUp
    Columns("f:f").ColumnWidth = 10
    Range("A2").Select


    For i = 2 To antalsider    ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        Range("a1").Select

        ActiveCell.FormulaR1C1 = i    ' hvilken side skal den til at hente som står i celle A3

        ' Nu starter vi med side 2

        '


        With ActiveSheet.QueryTables.Add(Connection:= _
                                        "URL;http://www.vare.dk/search.aspx?sort=El-a&Mål=Alle&min=0&max=400&type=El&page=" & CStr(i) _
          , Destination:=Range("A1"))
            .Name = _
            "search.aspx?sort=El-a&Mål=Alle&min=0&max=400&type=EL&page=" & CStr(i) & q = bygget
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = False
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .WebSelectionType = xlAllTables
            .WebFormatting = xlWebFormattingAll
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .Refresh BackgroundQuery:=False
        End With
        Rows("2:4").Delete Shift:=xlUp    'slet de 2 første linier

        With Columns("A:K")    ' Opløser celle hvor El er i til en enkelt celle
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlBottom
            .WrapText = True
            .Orientation = 0
            .AddIndent = False
            .ShrinkToFit = False
            .MergeCells = False
        End With

        'Indsætter celler for Arkiv
        Range("A2:A40").Insert Shift:=xlToRight
        Range("A2:A40").ColumnWidth = 22.71
        'Range("A1").Select

        Dim C1 As Long
        Dim RW1 As Long
        RW1 = Range("b2").End(xlDown).Row
   
        For C1 = RW1 To 2 Step -1
            If IsNumeric(Left(Cells(C1, "B"), 1)) Then
                Cells(C1, "B").Copy Cells(C1, "B").Offset(1, -1)
                Rows(C1).Delete  ' Slet rækken som active cell står på
                '  Range("b2", Range("b2").End(xlDown)).Select " KABBAK" skal ikke bruges Sløver
            Else
                Cells(C1, "B").Offset(-1, -1).Copy Cells(C1, "B").Offset(0, -1)
            End If
        Next

        Range("A2:K22").Copy    ' Flyt data over på ark 1

        Sheets("Ark1").Select
        'Range("A2").Select

        Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _
                            , Transpose:=False

        Selection.End(xlDown).Select
        ActiveCell.Offset(1, 0).Select

        Sheets("Ark2").Select

        Rows("1:37").Delete Shift:=xlUp
        Columns("f:f").ColumnWidth = 17.71
        Range("A2").Select

    Next i

    ActiveWorkbook.Save
Avatar billede rabitjosph Juniormester
29. april 2007 - 10:50 #8
Hej kabbak

Den skal starter oppe fra, eller går det ikke

Dim C As Long
    Dim RW As Long
    RW = Range("b3").End(xlDown).Row

    For C = RW To 2 Step -1
        If IsNumeric(Left(Cells(C, "B"), 1)) Then
            Cells(C, "B").Copy Cells(C, "B").Offset(1, -1)
            Rows(C).Delete  ' Slet rækken som active cell står på
Avatar billede kabbak Professor
29. april 2007 - 11:01 #9
ok så bør de se sådan ud

Dim C As Long
    Dim RW As Long
    RW = Range("b3").End(xlDown).Row
    For C = 2 To RW
        If IsNumeric(Left(Cells(C, "B"), 1)) Then
            Cells(C, "B").Copy Cells(C, "B").Offset(1, -1)
            Rows(C).Delete  ' Slet rækken som active cell står på
            C = C - 1: RW = RW - 1
        Else
            Cells(C, "B").Offset(-1, -1).Copy Cells(C, "B").Offset(0, -1)
        End If
    Next

+++++++++++++++ den anden +++++++++++++++

  Dim C1 As Long
        Dim RW1 As Long
        RW1 = Range("b2").End(xlDown).Row

        For C1 = 2 To RW1
            If IsNumeric(Left(Cells(C1, "B"), 1)) Then
                Cells(C1, "B").Copy Cells(C1, "B").Offset(1, -1)
                Rows(C1).Delete  ' Slet rækken som active cell står på
                C1 = C1 - 1: RW = RW - 1
            Else
                Cells(C1, "B").Offset(-1, -1).Copy Cells(C1, "B").Offset(0, -1)
            End If
        Next
Avatar billede kabbak Professor
29. april 2007 - 11:02 #10
ret lige den sidste

  C1 = C1 - 1: RW = RW - 1
til
  C1 = C1 - 1: RW1 = RW1 - 1
Avatar billede rabitjosph Juniormester
29. april 2007 - 11:35 #11
Hej

Så virker det, men så var der det med hastigheden,
det har ikke givet noget af betydning, så det er nok
et helt andet problem jeg har ?

Efter ca. 5 min, er kørsel meget nedsat og jeg vil mene det er
ligefrem propositional, så til sidst vil den vel gå helt i stå !

Jeg har prøvet at gemme for hver min. men det giver intet

Så det må være mængede af data som excel ikke er glad for at håndtere,
kan man optimere på det ?
Avatar billede kabbak Professor
29. april 2007 - 12:10 #12
Prøv også at sætte disse 2 aller øverst i koden

Application.ScreenUpdating = False
Application.Calculation =xlCalculationManual

og disse 2 aller nederst i koden

Application.ScreenUpdating = True
Application.Calculation =xlCalculationAutomatic
Avatar billede kabbak Professor
29. april 2007 - 12:19 #13
Hov ser lige at du har formler

Range("B1").FormulaR1C1 = "=R[0]c[3]/20"
    Range("C1").FormulaR1C1 = "=ROUNDUP(RC[-1],0)" 

så skal

Application.Calculation =xlCalculationManual

stå under dem
Avatar billede rabitjosph Juniormester
29. april 2007 - 13:01 #14
Jeg tro ikke det har noget at gøre med

Range("B1").FormulaR1C1 = "=R[0]c[3]/20"
    Range("C1").FormulaR1C1 = "=ROUNDUP(RC[-1],0)" 

de bliver kun brugt en gang, lige i starten. ?

Har også prøvet med
"Prøv også at sætte disse 2 aller øverst i koden
Application.ScreenUpdating = False
Application.Calculation =xlCalculationManual
og disse 2 aller nederst i koden
Application.ScreenUpdating = True
Application.Calculation =xlCalculationAutomatic"

Dette hjalp heller ikke noget.

Jeg tror det har noget med mængden af data, men det kan da næste ikke
passe for så meget er det da helle ikke ?
Avatar billede rabitjosph Juniormester
29. april 2007 - 13:49 #15
En ide

Jeg bruger udklipsholder hver gang, den slå op, kan det været noget her som tager ram ?

CPU bruges 100%, kan det fortælle noget ?
Avatar billede rabitjosph Juniormester
24. juli 2007 - 20:16 #16
Et svar kabbak, så jeg kan lukke den
Avatar billede kabbak Professor
24. juli 2007 - 21:54 #17
et svar
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
Kurser inden for grundlæggende programmering

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