Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeitverhalten Excel 2007 (Union)

Forumthread: Zeitverhalten Excel 2007 (Union)

Zeitverhalten Excel 2007 (Union)
31.08.2008 22:00:03
SteffenS
Hallo Zusammen,
mit dem Code:
For i = 13 To 5500
If PLUE.Cells(i, 4).Value = Marke Then
delze = True
Else
delze = False
End If
If delze Then
If Not rngAusblenden Is Nothing Then
Set rngAusblenden = Union(rngAusblenden, Range(PLUE.Cells(i, 1), PLUE.Cells(i, 256)))
Else
Set rngAusblenden = Range(PLUE.Cells(i, 1), PLUE.Cells(i, 256))
End If
End If
Next i
On Error GoTo oausbl
rngAusblenden.Rows.ClearContents
rngAusblenden.EntireRow.Hidden = True
Set rngAusblenden = Nothing
oausbl:
Entferne ich sehr viele Werte aus einer Tabelle.
Bis Excel 2003 funktioniert dies innerhalb von 1-2 Sekunden.
Unter Excel 2007 dauert es eine Ewigkeit (> 1 min)
Woran kann dies liegen?
Die Berechnung habe ich schon ausgeschalten und auch Application.ScreenUpdating deaktiviert.
Habt Ihr eine Idee?
Danke im Voraus.
VG
Steffen Schmerler
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Poste doch mal den gesamten Code...
31.08.2008 22:06:53
{Boris}
Hi Steffen,
...und das am Besten innerhalb einer Beispielmappe. Dann kann man das leichter nachvollziehen.
Grüße Boris
AW: Poste doch mal den gesamten Code...
31.08.2008 22:19:00
SteffenS
Hallo Boris,
den Code kann ich Dir geben. Leider habe ich keine Mappe die ich schicken kann. Wegen der Werte und so...
</p><pre>Sub pl_sen_ker_anp(Marke As String, BT, HDNR) ', HNr1 As Long
Dim delze As Boolean
Dim rngAusblenden As Range
Dim PLUE As Worksheet 'Planung
Set ADM = Workbooks(admin_datei).Sheets("bt_admin")
Dim tb As Object
If Marke = ADM.Range("K8").Value Then
Marke = ADM.Range("L8").Value
ElseIf Marke = ADM.Range("L8").Value Then
Marke = ADM.Range("K8").Value
Else
End If
'Übergabedatei setzen
Set PLUE = Workbooks(uedat).Sheets(HDNR)
'Alle Zeilen einblenden
PLUE.Rows.EntireRow.Hidden = False
'Berechnung aus
'Application.Calculation = xlCalculationManual
For i = 13 To 5500
If PLUE.Cells(i, 4).Value = Marke Then
delze = True
Else
delze = False
End If
If delze Then
If Not rngAusblenden Is Nothing Then
Set rngAusblenden = Union(rngAusblenden, Range(PLUE.Cells(i, 1), PLUE.Cells(i, 256)))
Else
Set rngAusblenden = Range(PLUE.Cells(i, 1), PLUE.Cells(i, 256))
End If
End If
Next i
On Error GoTo oausbl
rngAusblenden.Rows.ClearContents
rngAusblenden.EntireRow.Hidden = True
Set rngAusblenden = Nothing
oausbl:
'Berechnung ein
Application.Calculation = xlCalculationAutomatic
Application.Calculate
'Werte markieren und löschen
Workbooks(uedat).Activate
Sheets(HDNR).Select
PLUE.Cells.Copy
PLUE.Cells.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
PLUE.Range("A1").Value = Year(Range("I3").Value)
PLUE.Range("A1").Select
PLUE.Cells.ClearFormats
'Buttons löschen
For Each tb In PLUE.Shapes
tb.Delete
Next tb
End Sub</pre><p>
Vielleicht kannst Du mir ja doch helfen?
VG
Steffen
Anzeige
Sorry...
31.08.2008 22:52:00
{Boris}
Hi Steffen,
...ohne Beispielmappe (mit Dummydaten) ist mir das zu umständlich nachzubauen. Und selbst wenn: Wer weiß, ob nicht irgendein anderer Übeltäter in DEINER Datei für das Schneckentempo verantwortlich ist...
Frage daher noch offen.
Grüße Boris
AW: Poste doch mal den gesamten Code...
01.09.2008 12:21:00
Luschi
Hallo Steffen,
versuch es mal so:

Sub pl_sen_ker_anp(Marke As String, BT, HDNR) ', HNr1 As Long
Dim delze As Boolean
Dim rngAusblenden As Range, rg1 As Range, rg2 As Range
Dim PLUE As Worksheet 'Planung
Set ADM = Workbooks(admin_datei).Sheets("bt_admin")
Dim tb As Object
If Marke = ADM.Range("K8").Value Then
Marke = ADM.Range("L8").Value
ElseIf Marke = ADM.Range("L8").Value Then
Marke = ADM.Range("K8").Value
Else
End If
'Übergabedatei setzen
Set PLUE = Workbooks(uedat).Sheets(HDNR)
'Alle Zeilen einblenden
PLUE.Rows.EntireRow.Hidden = False
'Berechnung aus
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Cursor = xlWait
Set rg1 = PLUE.Range("A13:A5500")
For Each rg2 In rg1
delze = rg2.Offset(0, 4).Value = Marke
If delze Then
If rngAusblenden Is Nothing Then
Set rngAusblenden = rg2
Else
Set rngAusblenden = Union(rngAusblenden, rg2)
End If
End If
Next rg2
Set rg1 = Nothing
Set rg2 = Nothing
On Error GoTo oausbl
rngAusblenden.EntireRow.ClearContents
rngAusblenden.EntireRow.Hidden = True
Set rngAusblenden = Nothing
oausbl:
'Berechnung ein
Application.Calculation = xlCalculationAutomatic
Application.Calculate
'Werte markieren und löschen
Application.Calculation = xlCalculationManual
Workbooks(uedat).Activate
Sheets(HDNR).Select
PLUE.Cells.Copy
PLUE.Cells.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
PLUE.Range("A1").Value = Year(Range("I3").Value)
PLUE.Range("A1").Select
PLUE.Cells.ClearFormats
'Buttons löschen
For Each tb In PLUE.Shapes
tb.Delete
Next tb
Set PLUE = Nothing
Set ADM = Nothing
Set tb = Nothing
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = False
Application.Cursor = xlDefault
End Sub

Gruß von Luschi
aus klein-Paris

Anzeige
fehler im code
01.09.2008 17:20:00
SteffenS
Hallo Luschi,
leider funktioniert der Code bei mir nicht richtig.
Excel meldet mir:
Objektvariable oder With Variable nicht festgelegt.
Der Fehler kommt beim löschen
Woran liegt dies?
Danke Dir
MFG
Steffen
Fehler gefunden, aber noch eine Frage
01.09.2008 17:34:25
SteffenS
Hallo Luschi,
habe den Fehler gefunden aber noch eine Frage?
Warum läuft Dein Code schneller als meiner?
Danke Dir?
VG
Steffen Schmerler
Anzeige
weiß jetzt woran es liegt
01.09.2008 23:19:38
SteffenS
Die Zeile Application.EnableEvents=False wirkt wahre Wunder.
Danke nochmal
Steffen

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige