Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1004to1008
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

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

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
weiß jetzt woran es liegt
01.09.2008 23:19:38
SteffenS
Die Zeile Application.EnableEvents=False wirkt wahre Wunder.
Danke nochmal
Steffen

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige