Microsoft Excel

Herbers Excel/VBA-Archiv

Bestimmte Spalten löschen | Herbers Excel-Forum


Betrifft: Bestimmte Spalten löschen von: Chris
Geschrieben am: 12.11.2009 13:16:11

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?

  

Betrifft: Spalten löschen, wenn in Zeile 12 kein Datum steht von: NoNet
Geschrieben am: 12.11.2009 13:33:37

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


  

Betrifft: AW: Bestimmte Spalten löschen von: Chris
Geschrieben am: 12.11.2009 13:35:08

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


  

Betrifft: AW: Bestimmte Spalten löschen von: Chris
Geschrieben am: 12.11.2009 16:12:52

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?


  

Betrifft: AW: Bestimmte Spalten löschen von: Daniel
Geschrieben am: 15.11.2009 17:53:41

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


Beiträge aus den Excel-Beispielen zum Thema "Bestimmte Spalten löschen"