HERBERS Excel-Forum - das Archiv
Bestimmte Spalten löschen
Chris

Hi zusammen,
ich möchte mittels einem Makro bestimmte Spalten einer Tabelle löschen. Und zwar sollen ab Spalte D alle Spalten gelöscht werden, die in der Überschrift einen Text stehen haben oder keine Überschrift haben.
Die Spaltenüberschriften befinden sich in Zeile 12.
Man könnte das auch anders ausdrücken: Ab Spalte D sollen alle Spalten, die in der Überschrift ein Datum stehen haben (MMM YY), erhalten bleiben.
Jemand einen guten Tipp?

Spalten löschen, wenn in Zeile 12 kein Datum steht
NoNet

Hallo chris,
vielleicht ein "guter Tipp" : Per Makro funktioniert das so :
Sub SpaltenOhneDatumInZeile12Loeschen()
Dim lngS As Long
For lngS = Columns.Count To 4 Step -1
If Not IsDate(Cells(12, lngS)) Then _
Columns(lngS).EntireColumn.Delete shift:=xlToLeft
Next
End Sub

Gruß, NoNet
AW: Bestimmte Spalten löschen
Chris

Servus Namensvetter,
probier's mal so:
Sub t()
Dim lastcol As long, i As long
lastcol = Cells.Find(what:="*", Searchorder:=xlByColumns, Searchdirection:=xlPrevious).Column
For i = lastcol To 1 Step -1
If Not IsDate(Cells(12, i)) Then
Columns(i).Delete
End If
Next i
End Sub
Gruß
Chris
AW: Bestimmte Spalten löschen
Chris

Was ich noch vergessen habe:
Ich möchte die Spalten nicht im aktivierten Sheet, sondern per Knopfdruck auf einen Commandbutton (der Code dahinter eledigt auch noch ein paar andere Sachen) in Tabelle1 die Spalten in Tabelle3, Tabelle4 und Tabelle5 löschen.
Wie ergänze ich den Code?
AW: Bestimmte Spalten löschen
Daniel

HI
du könntest das so erweitern
Sub t()
Dim lastcol As long, i As long
Dim sh As Worksheet
For Each sh In Sheets(Array("Tabelle1", "Tabelle3", "Tabelle4", "Tabelle5"))
lastcol = sh.Cells.Find(what:="*", Searchorder:=xlByColumns, Searchdirection:=xlPrevious) _
.Column
For i = lastcol To 1 Step -1
If Not IsDate(sh.Cells(12, i)) Then
sh.Columns(i).Delete
End If
Next i
next
End Sub

Gruß, Daniel