Clever-Excel-Forum

Normale Version: Ausblenden von leeren Spalten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen, 

ich habe eine EXCEL-Tabelle erstellt. Mit einem Makro sollen nun alle leeren Spalten ausgeblendet werden. 
In der Tabelle gibt es zwei Auswahlmöglichkeiten: i.O. und N.i.O. im ersten Schritt wird bspw. nach i.O. gefiltert und somit alle übrigen Zeilen ausgeblendet.
Um nun leere Spalten auszublenden habe ich folgenden Code verwendet:

Code:
Public Sub Ausblenden()
Dim i As Long
Application.ScreenUpdating = False
With Worksheets("Exhibits")
For i = 4 To 10
    If WorksheetFunction.CountA(.Range(.Cells(5, i), .Cells(21, i))) = 0 Then
        .Columns(i).Hidden = True
    End If
Next i
End With

Application.ScreenUpdating = True
End Sub

Wenn in den ausgeblendeten Zeilen Einträge vorhanden sind, werden die Spalten nicht ausgeblendet.
Kann mir jemand sagen, wie ich den Code anpassen muss, damit nur eingeblendete Zeilen betrachtet werden?

Vielen Dank im Voraus.  Blush
Hallo

Code:
Public Sub Test()
Dim spalte

With Sheets("Tabelle1").AutoFilter.Range
     For Each spalte In .Columns
        If WorksheetFunction.Subtotal(3, spalte.Resize(.Rows.Count - 1).Offset(1)) = 0 Then spalte.EntireColumn.Hidden = True
     Next spalte
End With
End Sub
Versuch es mal damit.
Hallo Elex, 

vielen Dank für die schnelle Hilfe, funktioniert aber leider nicht so wie ich es brauche. 
Es sollen nur die Zeilen 5 - 21. Davor stehen noch Überschriften, weshalb die Spalten dann nicht als "leer" erkannt werden.. 

Eine Idee wie ich das noch mit reinbringen könnte?

Viele Grüße
Sollte eigentlich gehen. Der Code beachtet die Überschriften der Kopfzeile nicht.

Stell sonst bitte eine Bsp.Datei ein, damit wir nicht aneinander vorbei reden.
Hallo Simon,

Code:
Public Sub Ausblenden()
  Dim i As Long
  Application.ScreenUpdating = False
  With Worksheets("Exhibits")
    For i = 4 To 10
      .Columns(i).Hidden = WorksheetFunction.Subtotal(103, .Range(.Cells(5, i), .Cells(21, i))) = 0
    Next i
  End With
End Sub

Gruß Uwe