Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Bestimmte Spalten belassen, andere löschen

VBA Bestimmte Spalten belassen, andere löschen
14.01.2016 21:29:13
WalterK
Schönen Abend,
der nachfolgende Code aus dem Internet löscht alle Spalten außer die im Array angeführten:
Kann mir jemand den Code so abändern, dass die Spaltennamen nicht im Code namentlich angeführt werden müssen sondern aus Tabelle2!A1:Ax genommen werden.
Option Explicit
Sub SpaltenBelassenLöschen()
Dim rng As Range, rngDel As Range
Dim vntColumnsToKeep As Variant
'Überschriften die NICHT gelöscht werden sollen!
vntColumnsToKeep = Array("Name", "Vorname", "Strasse", "Ort")
For Each rng In ActiveSheet.UsedRange.Rows(1).Cells
If IsError(Application.Match(rng, vntColumnsToKeep, 0)) Then
If rngDel Is Nothing Then
Set rngDel = rng.EntireColumn
Else
Set rngDel = Union(rngDel, rng.EntireColumn)
End If
End If
Next
If Not rngDel Is Nothing Then rngDel.Delete
Set rng = Nothing
Set rngDel = Nothing
End Sub
Besten Dank für die Hilfe, Servus Walter

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Hat sich erledigt! Schönen Abend, Servus, Walter
14.01.2016 21:56:50
WalterK

AW: VBA Bestimmte Spalten belassen, andere löschen
14.01.2016 21:57:02
Sepp
Hallo Walter,
Sub SpaltenBelassenLöschen()
Dim rng As Range, rngDel As Range
Dim vntColumnsToKeep As Variant

With Sheets("Tabelle2")
  vntColumnsToKeep = .Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row)
End With

For Each rng In ActiveSheet.UsedRange.Rows(1).Cells
  If IsError(Application.Match(rng, vntColumnsToKeep, 0)) Then
    If rngDel Is Nothing Then
      Set rngDel = rng.EntireColumn
    Else
      Set rngDel = Union(rngDel, rng.EntireColumn)
    End If
  End If
Next

If Not rngDel Is Nothing Then rngDel.Delete

Set rng = Nothing
Set rngDel = Nothing
End Sub

Gruß Sepp

Anzeige
AW: VBA Bestimmte Spalten belassen, andere löschen
14.01.2016 21:58:50
Daniel
HI
einfach bei der Match-Funktion den Zellbereich der durchsucht werden soll direkt angeben:
Match(rng, sheets("Tabelle2").Columns(1), 0)
Gruss Daniel

Besten Dank fürs Helfen. Habe ..
14.01.2016 22:01:21
WalterK
.. es doch noch selbst hinbekommen.
Servus, Walter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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