Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
948to952
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
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Löschvorgang beschleuningen

Löschvorgang beschleuningen
12.02.2008 14:29:25
Christian
Hallo zusammen,
habe leider ein kleines Laufzeitproblem.
Ich merke mir in einem Array welche Zeilen ich verwende. In dem folgenden Code möchte ich nun bestimmte Zellen einer Zeile löschen die nicht verwendet werden.
Das Array ist schon der größe nach sortiert jedoch bei 3000 Zeilen dauert dieser vorgang zur Zeit etwa 1-2 sekunden pro zeile. Würde mich freuen wenn jemand einen Vorschlag hat wie ich die Laufzeit verkürzen könnte.

For s = 1 To UBound(materialArray, 1)
Do While i  "" Then
wkbwksData.Cells(i, 4).Value = ""
wkbwksData.Cells(i, 25).Value = ""
wkbwksData.Cells(i, 26).Value = ""
wkbwksData.Cells(i, 28).Value = ""
wkbwksData.Cells(i, 29).Value = ""
wkbwksData.Range("BH" & i & ":IO" & i).Value = ""
wkbwksData.Range("AB" & i & ":AC" & i).Value = ""
wkbwksData.Range("AE" & i & ":AF" & i).Value = ""
wkbwksData.Range("AH" & i & ":AI" & i).Value = ""
wkbwksData.Range("AK" & i & ":AL" & i).Value = ""
wkbwksData.Range("AN" & i & ":AO" & i).Value = ""
wkbwksData.Range("AQ" & i & ":AR" & i).Value = ""
wkbwksData.Range("AT" & i & ":AU" & i).Value = ""
wkbwksData.Range("AW" & i & ":AX" & i).Value = ""
wkbwksData.Range("AZ" & i & ":BA" & i).Value = ""
wkbwksData.Range("BC" & i & ":BD" & i).Value = ""
End If
i = i + 1
Loop
i = i + 1
Next s


Gruß
Christian

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschvorgang beschleuningen
12.02.2008 15:26:00
Rudi
Hallo,
versuchs mal so:

myArr = wkbwksData.Range("A1").CurrentRegion
For s = 1 To UBound(materialArray, 1)
Do While i  "" Then
myArr(i, 4) = ""
myArr(i, 25) = ""
myArr(i, 26) = ""
myArr(i, 28) = ""
myArr(i, 29) = ""
For j = 60 To 249
myArr(i, j) = ""
Next
For j = 28 To 55 Step 3
myArr(i, j) = ""
myArr(i, j + 1) = ""
Next
End If
i = i + 1
Loop
i = i + 1
Next s
With wkbwksData
.Range(.Cells(1, 1), .Cells(UBound(myArr, 1), UBound(myArr, 2))) = myArr
End With


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Löschvorgang beschleuningen
12.02.2008 17:20:40
Christian
Servus,
myarr habe ich als variant deklariert war das richtig oder als was muss ich das sonst deklarieren.
bekomme leider aber einen Laufzeitfehler '13' in dieser Zeile:

If myArr(i, 25)  "" Then


wenn ich für diese Zeile meinen Code verwende meckert er in der nächsten zeile bei myarr(i,4)
Hast du noch einen Tipp für mich?

AW: Löschvorgang beschleuningen
12.02.2008 19:50:42
Uduuh
Hallo,
variant ist schon ok.
da aber weder Rudi, ich oder sonst jemand deine Mappe kennt, ist es schwierig, funktionierenden Code bereit zu stellen. Kannst du mal eine abgespeckte Beispielmappe hochladen?
Gruß aus’m Pott
Udo

Anzeige
AW: Löschvorgang beschleuningen
12.02.2008 23:38:46
Daniel
Hi
du könntest dein Makro auch so beschleunigen:
1. alle zu löschenenden Bereiche in in der Zeile 1 in einer RANGE-Variable zusammen fassen
2. beim Löschen in der Schleife verwendest du dann diese RANGE-Variable, damit du richtige Zeile triffst, musst du sie mit OFFSET um i-1 verschieben.
als Code sieht es dann so aus: (die Definition der Range-Variable musst du noch vervollständigen)

Dim rng As Range
Set rng = wkbksdata.Range("D1,Y1,Z1,AB1:AC1,AE1:AF1,AH1:AI1,AK1:AL1")
For s = 1 To UBound(materialArray, 1)
Do While i  "" Then
rng.Offset(i - 1, 0).ClearContents
End If
i = i + 1
Loop
i = i + 1
Next s


Das Löschen der Rangevariable dauert auch bei grösseren Zellbereichen nur unwesentlich länger als das löschen einer einzelnen Zelle. Damit müsste dein Code um etwa den Faktor 15 schneller werden.
und kürzer ist der Code auch noch.
Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige