Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Code verbessern

Forumthread: Code verbessern

Code verbessern
26.10.2017 19:32:46
WalterK
Hallo und schönen Abend,
In einer importierten Tabelle mit ca. 10000 Zeilen und 60 Spalten sind auch sehr viele Zellen mit . oder - oder -- oder --- befüllt.
Mit dem folgenden Code leere ich diese Zellen:
On Error Resume Next
For i = 1 To LCol1
wkssas.Range(wkssas.Cells(1, 1), wkssas.Cells(LzA, LCol1)).AutoFilter Field:=i, _
Criteria1:=Array(".", "-", "--", "---"), Operator:=xlFilterValues
wkssas.Range(wkssas.Cells(2, i), wkssas.Cells(LzA, i)).SpecialCells(xlVisible). _
ClearContents
wkssas.AutoFilter.ShowAllData
Next i
Bei der Größe der Tabelle dauert es allerdings einige Zeit.
Geht das auch schneller, hat jemand eine Idee.
Danke und Servus, Walter
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Range.Replace-Methode
26.10.2017 19:52:46
RPP63
Moin!
https://msdn.microsoft.com/de-de/vba/excel-vba/articles/range-replace-method-excel
Gerne iVm Durchhoppeln eines Arrays.
Gruß Ralf
AW: &. so schön abstrakt :-)
26.10.2017 20:08:25
Gerd
Servus Walter!
Dim vnt as variant
For Each vnt In Array(".", "-", "--", "---")
wkssas.Range(wkssas.Cells(1, 1), wkssas.Cells(LzA, LCol1)).Replace vnt, "", xlWhole
Next

Gruß Gerd
Anzeige
Mann oh Mann, das ist ...
26.10.2017 20:36:13
WalterK
... ja rasend schnell.
Besten Dank für die Hilfe.
Servus, Walter
AW: Mann oh Mann, das ist ...
27.10.2017 04:49:17
fcs
Hallo Walter,
alterntiv zu Suchen/Ersetzen, die ich als Variante auch angeboten hätte.
Ist es ggf. auch wichtig, wärend der Makroausführung die Bildschirmaktualisierung zu deaktivieren und den Berechnungs-Modus vorübergehend auf "manuell" zu setzen.
Je nach Art der Formeln ist dann die Makro-Ausführung um den Faktor 10+ schneller.
Falls Ereignismakros vorhanden sind, dann diese vorübergehend auch deaktivieren.
On Error Resume Next
Dim StatusCalc
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
For i = 1 To lCol1
wkssas.Range(wkssas.Cells(1, 1), wkssas.Cells(LzA, lCol1)).AutoFilter Field:=i, _
Criteria1:=Array(".", "-", "--", "---"), Operator:=xlFilterValues
wkssas.Range(wkssas.Cells(2, i), wkssas.Cells(LzA, i)).SpecialCells(xlVisible). _
ClearContents
wkssas.AutoFilter.ShowAllData
Next i
With Application
.Calculation = StatusCalc
.ScreenUpdating = True
End With

Gruß
Franz
Anzeige
Hallo Franz. Danke auch ...
27.10.2017 10:01:44
WalterK
.. Dir für den Tip.
Auf die Idee es mit Suchen/Ersetzen zu lösen bin ich einfach nicht gekommen.
Das unterscheidet dann eben den Laien vom Profi.
Servus, Walter
;

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