Wie diesen Code optimieren/beschleunigen?
18.10.2019 16:08:25
AleXSR700
ich habe nun ein neues kleines Problem.
Ich nutze folgenden Code, um alle leere Spalten in einer bestimmten Tabelle zu löschen. Dabei darf nur der Inhalt der Tabelle und nicht die ganze Spalte gelöscht werden.
With Worksheets("Infos")
InfoRow = 22
InfoColumn = 1
Dim CleanColumn As Long
For CleanColumn = .Cells(23, Columns.Count).End(xlToLeft).Column To 4 Step -1
If .Cells(Rows.Count, CleanColumn).End(xlUp).Row = 23 Then _
Call .Range(.Cells(22, CleanColumn), .Cells(Rows.Count, CleanColumn)).Delete(Shift:=xlShiftToLeft)
Next
End With
Das Problem ist, dass die Tabellen mittlerweile etwa 150 Spalten breit und 30 Zeilen lang sind. Dies liegt daran, dass die Datenbank derart viele Variablen hat. Die meisten Aufträge nutzen davon nur etwa. 10, aber trotzdem müssen alle zur Auswahl vorhanden sein damit alle Zuordnungskombinationen funktionieren. Deshalb dauert dieser Code mittlerweile etwa 15 min bis er fertig ist. Und das ist leider etwas zu lange. Vor allem in den Fällen, in denen von den 150 Spalten nur 10 verwendet wurden.
Gibt es einen Weg den Code zu optimieren?
Ziel:
Prüfen, ob in irgendeiner Zeile unter irgendeiner Spalte der Kopfzeile ein Wert steht.
Falls es hilft: es kann nur in den Zeilen ein Wert stehen, die in der ersten Spalte einen Wert stehen haben. Denn der erste Wert einer jeden Zeile MUSS existieren. Wenn hier keiner existiert, dann sind alle Spalten dieser Zeile leer.
Vielen lieben Dank für eure Hilfe und viele Grüße
Alex