Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1540to1544
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Optimieren von Funktionen möglich?

Optimieren von Funktionen möglich?
12.02.2017 09:58:57
Funktionen

Hallo,
beide Funktionen laufen, jedoch brauchen sie lange zum Ausführen, wenn die Tabelle sehr lang wird- z.B. 3000 Datensätze im Bereich von A-L.
Zeile Einfügen und Rest nach unten verschieben- fügt mir eine Leerzeile ein und
Zeile Löschen und Rest nach oben verschieben- löscht eben mal die aktive Zeile.
Gibt es für diese Funktionen auch schnellere Möglichkeiten?
  • Sub nachUnten()
    ' Zeile Einfügen und Rest nach unten verschieben, mit Erweiterung  _
    NR in SpalteA
    Dim lngLetzte As Long
    If Cells(ActiveCell.Row, 1).Value = "" Then Exit Sub
    Cells(ActiveCell.Row, 2).Resize(1, 13).Insert Shift:=xlDown, CopyOrigin:= _
    xlFormatFromLeftOrAbove
    lngLetzte = Cells(ActiveCell.Row, 1).End(xlDown).Row
    If lngLetzte = ActiveSheet.Rows.Count Then
    Cells(ActiveCell.Row + 1, 1) = Cells(ActiveCell.Row, 1) + 1
    ElseIf Application.WorksheetFunction.CountA(Cells(lngLetzte + 1, 2).Resize(1, 13)) = 0 Then
    Cells(lngLetzte + 1, 2).Resize(1, 13).Delete Shift:=xlUp
    Else
    Cells(lngLetzte + 1, 1) = Cells(lngLetzte, 1) + 1
    End If
    End Sub
    

    
    Sub nachOben()
    ' Zeile Löschen und Rest nach oben verschieben
    Application.ScreenUpdating = False
    Dim lngLetzte As Long
    Dim lngZeile As Long
    lngZeile = ActiveCell.Row
    lngLetzte = Cells(ActiveCell.Row, 1).End(xlDown).Row
    If Cells(ActiveCell.Row + 1, 1).Value = "" _
    Or Cells(ActiveCell.Row, 1).Value = "" Then
    Cells(ActiveCell.Row, 2).Resize(1, 13).ClearContents
    Else
    Cells(ActiveCell.Row, 2).Resize(1, 13).Delete Shift:=xlUp
    Cells(lngLetzte, 2).Resize(1, 13).Insert Shift:=xlDown
    Cells(lngLetzte - 1, 2).Resize(1, 13).Copy
    Cells(lngLetzte, 2).PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False
    Cells(lngZeile, 3).Select
    End If
    Application.ScreenUpdating = True
    End Sub
    


  • Gruß Andi

    2
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Optimieren von Funktionen möglich?
    12.02.2017 10:15:06
    Funktionen
    Hallo Andi,
    die meiste Zeit geht in der Regel durch die Neuberechnung aller Formeln verloren, deshalb solltest du die Formelberechnung zwischenzeitlich auf "manuell" umschalten:
    Sub nachUnten()
    ' Zeile Einfügen und Rest nach unten verschieben, mit Erweiterung  _
    _
    NR in SpalteA
    Dim lngLetzte As Long
    If Cells(ActiveCell.Row, 1).Value = "" Then Exit Sub
    With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    End With
    Cells(ActiveCell.Row, 2).Resize(1, 13).Insert Shift:=xlDown, CopyOrigin:= _
    xlFormatFromLeftOrAbove
    lngLetzte = Cells(ActiveCell.Row, 1).End(xlDown).Row
    If lngLetzte = ActiveSheet.Rows.Count Then
    Cells(ActiveCell.Row + 1, 1) = Cells(ActiveCell.Row, 1) + 1
    ElseIf Application.WorksheetFunction.CountA(Cells(lngLetzte + 1, 2).Resize(1, 13)) = 0 Then
    Cells(lngLetzte + 1, 2).Resize(1, 13).Delete Shift:=xlUp
    Else
    Cells(lngLetzte + 1, 1) = Cells(lngLetzte, 1) + 1
    End If
    With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
    End With
    End Sub
    Sub nachOben()
    ' Zeile Löschen und Rest nach oben verschieben
    Dim lngLetzte As Long
    Dim lngZeile As Long
    lngZeile = ActiveCell.Row
    lngLetzte = Cells(ActiveCell.Row, 1).End(xlDown).Row
    With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    End With
    If Cells(ActiveCell.Row + 1, 1).Value = "" _
    Or Cells(ActiveCell.Row, 1).Value = "" Then
    Cells(ActiveCell.Row, 2).Resize(1, 13).ClearContents
    Else
    Cells(ActiveCell.Row, 2).Resize(1, 13).Delete Shift:=xlUp
    Cells(lngLetzte, 2).Resize(1, 13).Insert Shift:=xlDown
    Cells(lngLetzte - 1, 2).Resize(1, 13).Copy
    Cells(lngLetzte, 2).PasteSpecial Paste:=xlPasteFormats
    Application.CutCopyMode = False
    Cells(lngZeile, 3).Select
    End If
    With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
    End With
    End Sub
    
    Viele Grüße
    Martin
    Anzeige
    AW: Optimieren von Funktionen möglich?
    12.02.2017 10:24:43
    Funktionen
    Danke Martin, läuft schon schneller. Super
    Gewisse Zeiten sollte man auch bei soviel Zeilen schon mal einplanen.
    Danke für das Ändern.
    Gruß Andi

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige