Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
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

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

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige