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

VBA - Texte löschen

VBA - Texte löschen
11.08.2023 13:15:25
Christian
Hallo,

ich bitte euch um Rat ob ich mein bestehendes Makro auch kürzer fassen kann? Zugegebenermaßen ich habe es aufgezeichnet und danach noch einiges gelöscht aber jetzt komme ich bei der Frage ob es noch kürzer geht nicht mehr weiter.

Prinzipiell geht es darum 29 Begriffe aus meiner Tabelle zu löschen, von denen jeder einzelne mindestens 211mal vorkommt.

Das Makro sieht jetzt so aus:

Sub Makro3()

With Worksheets("Tabelle1")

Cells.Replace What:="Browse by:", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Cells.Replace What:="Displaying page*", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2

usw. usw.

End With
End Sub

und dasselbe nochmal mit den 27 anderen Suchbegriffen. Das einzige was sich ändert sind die Suchbegriffe alles andere bleibt identisch.

Wie gesagt kann man das irgendwie weiter abkürzen? Danke
Christian

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Texte löschen
11.08.2023 13:40:38
daniel
HI
beim Replace sind die Parameter, die nach LookAt kommen, in der Regel unwichtig und man brauchst sie in der Regel nicht anzugeben.
dh meistens reicht es, die Parameter What, Replacement (diese müssen angegeben werden) und LookAt anzugeben (der ist wichtig und sollte immer angeben werden).
Wenn man mehrere Replace hat, kann man sich zu nutze machen, dass VBA bei Replace sich die Einstellungen merkt, so dass man nur die Parameter angeben muss, die sich verändern (What und Replacement muss man immer angeben, der Rest wird vom letzten mal übernommen)

die nächste Codeverkürzung ist, dass man die Parameternamen (What, Replacement usw) weglassen darf, wenn man die Parameter in der vom System vorgegeben Reihenfolge angibt.

dh du könntest deinen Code auch so verkürzen:
With Cells

.Replace "Browse By:", "", xlpart
.Replace "Displaying page", ""
.Replace "weiterer Text", ""
end with



wenn du viele Begriffe hast, kannst du diese auch in einem Array oder in einem Zellbereich sammeln, um dann eine Schleife zu schreiben:
da du hier nur eine Replace-Zeile hast, kann es wieder hilfreich und übersichlicher sein, die Parameterbenennung mit anzugeben (macht den Code für unerfahrene Programmierer leichter lesbar, da man die Parameterreihenfolge nicht auswendig wissen muss)
dim X

for each x in Array("Browse By:"; "Displaying Page", "weiterer Text")
Cells.replace what:=x, replacement:="", lookat:=xlpart
next


Gruß Daniel
Anzeige
AW: VBA - Texte löschen
11.08.2023 13:42:16
UweD
hallo

So?

Sub Makro3()

Dim Arr(), i As Integer
Arr = Array("Browse by:", "Displaying page*", "usw.")
With Worksheets("Tabelle1")

For i = LBound(Arr) To UBound(Arr)
Cells.Replace What:=Arr(i), Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Next

End With
End Sub


LG UweD
VBA - Texte löschen
11.08.2023 15:03:46
Christian
Hallo Daniel, hallo Uwe,

erstmal danke für eure Mühe und eure Beiträge.
Zu dir Daniel, erstmal eine Frage. Ich gehe davon aus, dass du das * beim zweiten Suchbegriff weggelassen hast, war ein Versehen keine Absicht oder?

Jedenfalls habe ich mir gedacht, bei dem was ihr so geschrieben habt, könnte ich doch auch aus beiden Vorschlägen einen machen...

Sub Makro3()

Dim Arr(), i As Integer
Arr = Array("Browse by:", "Displaying page*", "usw")
With Worksheets("Tabelle1")

For i = LBound(Arr) To UBound(Arr)
With Cells
.Replace Arr(i), "", xlPart
Next

End With
End Sub


Jedoch da meint er Next ohne for. Wo ist da mein Fehler?

Christian
Anzeige
ok, blöder Anfängerfehler
11.08.2023 15:05:41
Christian
fehlte natürlich noch ein End With, jetzt geht's.
VBA - Texte löschen
11.08.2023 15:10:28
daniel
was den * angeht,
ich hab da jetzt nicht so genau hingeschaut, der Code soll dir ja nur beispielhaft zeigen, wie es funktioniert, damit du es dir selber programmieren kannst, wie du es brauchst.
"usw" kommt bei dir sicherlich auch nicht vor.
Gruß Daniel

VBA - Texte löschen
11.08.2023 15:11:24
Christian
davon bin ich auch ausgegangen. Ich wollte halt 100% absolut sicher gehen, daher hab ich nochmal nachgefragt. Danke

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige