Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1628to1632
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
Ganze Spalten löschen
03.07.2018 23:29:35
Richter
Hallo liebe Leute.
Habe nachstehendes Makro hier im Forum gefunden. Funktioniert auch gut.
Nun würde ich aber gerne mehrere Spalten löschen mit jeweils einem anderen Wort.
Wie kann ich das in 1 "Sub" schreiben?
Mein erster Versuch sah so aus:
Sub SpalteLoeschen()
Dim Such
Set Such = ActiveSheet.UsedRange.Find("Wort1")
If Not Such Is Nothing Then Such.EntireColumn.Delete
Dim Such
Set Such = ActiveSheet.UsedRange.Find("Wort2")
If Not Such Is Nothing Then Such.EntireColumn.Delete
End Sub

Könnt Ihr mir bitte weiterhelfen.

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

Betreff
Datum
Anwender
Anzeige
AW: Ganze Spalten löschen
03.07.2018 23:41:01
Daniel
Hi
Dim SuchWort
dim Such as range
For each SuchWort in Array("Wort1", "Wort2", "Wort3")
set Such = ActiveSheet.Usedrange.Find(what:=Suchwort)
if not Such is nothing then Such.EntireColumn.Delete
Next
Gruß Daniel
ps. gib bei .Find möglichst alle Parameter vor.
machst du das nicht, werden die letzten Einstellungen des Anwenders verwendet und dann kann es passieren, dass das was heute funktioniert hat, morgen nicht mehr geht.
gruß Daniel
AW: Ganze Spalten löschen
03.07.2018 23:41:55
Sepp
Hallo ?,
wenn jedes Suchwort nur einmal vorkommt, dann z.B. so.
Sub SpalteLoeschen()
  Dim rng As Range, rngDel As Range, varFind As Variant, varItem As Variant

  varFind = Array("Wort1", "Wort2", "Wort3")  'Suchbegriffe 

  For Each varItem In varFind
    Set rng = ActiveSheet.UsedRange.Find(What:=varItem, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
    If Not rng Is Nothing Then
      If rngDel Is Nothing Then
        Set rngDel = rng
      Else
        Set rngDel = Union(rngDel, rng)
      End If
    End If
  Next

  If Not rngDel Is Nothing Then rngDel.EntireColumn.Delete

  Set rng = Nothing
  Set rngDel = Nothing
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


 ABCDEF
1Gruß Sepp
2
3

Anzeige
Alternative zu den vorgestellten Arrays
04.07.2018 07:33:47
RPP63
Moin!
Wenn die Suchworte ohne Leerzeichen sind, gibt es eine sehr viel einfachere Lösung, dieses Array zu füllen, ohne sich die Finger zu verrenken: ;)
(beachte, dass das Array jetzt Null-basiert ist)
Sub x()
Dim y As Variant, z As Long
y = Split("Wort1 Wort2 Wort3")
For z = 0 To Ubound(y)
  'Dein SuchCode 
Next
End Sub
Gruß Ralf
Anzeige
Alternative zu den vorgestellten Arrays
04.07.2018 07:33:50
RPP63
Moin!
Wenn die Suchworte ohne Leerzeichen sind, gibt es eine sehr viel einfachere Lösung, dieses Array zu füllen, ohne sich die Finger zu verrenken: ;)
(beachte, dass das Array jetzt Null-basiert ist)
Sub x()
Dim y As Variant, z As Long
y = Split("Wort1 Wort2 Wort3")
For z = 0 To Ubound(y)
  'Dein SuchCode 
Next
End Sub
Gruß Ralf
Anzeige
AW: Alternative zu den vorgestellten Arrays
04.07.2018 08:08:56
Daniel
Hi
Das geht auch mit Texten, die Leerzeichen enthalten, wenn man ein anderes Trennzeichen nimmt.
Außerdem kann man auch bei Split die For Each-Schleife einsetzen, denn die Klammern für den Index sind genauso Fingerverenkend wie die Anführungszeichen:

Dim x
For each x in Split ("Wort 1,Wort 2,Wort 3", ",")
Cells.find(x).entirecolumn.delete
Next
Gruß Daniel
AW: Alternative zu den vorgestellten Arrays
04.07.2018 18:36:10
Richter
Danke erstmal für die vielen Antworten.
Ich hab mich für die erste Variante entschieden. Die funktioniert gut. Es gibt jedes "Wort" auch nur 1x.
Jetzt würde ich das ganze auch gerne noch für die Zeilen machen. Dort gibt es allerdings mehrfach das gleiche "Wort" (ohne Leerzeichen). Ich hab zwar schon eine funktionierende Lösung die ist allerdings sehr lang und kompliziert.
Wenn jemand noch so einen eleganten Weg kennt wäre ich sehr dankbar.
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige