Alle Beiträge von mic91668

VBA: Leere Spalten in Excel löschen

Als leere Spalten gelten im Folgenden solche, deren Zellen entweder leer oder 0 sind. Die Spaltenüberschriften werden hierbei natürlich nicht betrachtet.

Sub LoescheLeereOderNullSpalten()
    Dim LastCol As Long
    Dim CurrentCol As Long
    Dim rng As Range
    Dim cell As Range
    Dim IsZeroOrEmpty As Boolean
    Dim ws As Worksheet
    Dim MaxRow As Long

    ' Setzen Sie das aktive Arbeitsblatt
    Set ws = ThisWorkbook.ActiveSheet

    ' Ermitteln Sie die letzte Spalte mit Daten
    LastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    ' Ermitteln Sie die maximale Zeilennummer für das gesamte Arbeitsblatt
    For CurrentCol = 1 To LastCol
        Dim tempLastRow As Long
        tempLastRow = ws.Cells(ws.Rows.Count, CurrentCol).End(xlUp).Row
        If tempLastRow > MaxRow Then MaxRow = tempLastRow
    Next CurrentCol

    ' Loop rückwärts durch die Spalten
    For CurrentCol = LastCol To 1 Step -1
        
        ' Setzen Sie den Bereich für die gesamte Spalte von der ersten bis zur maximalen Zeile
        Set rng = ws.Range(ws.Cells(2, CurrentCol), ws.Cells(MaxRow, CurrentCol))
        
        IsZeroOrEmpty = True ' Standardmäßig annehmen, dass die Spalte nur 0 oder leer ist
        
        ' Loop durch jede Zelle im Bereich
        For Each cell In rng
            If Not IsError(cell.Value) Then
                If cell.Value <> "" And cell.Value <> 0 Then
                    IsZeroOrEmpty = False
                    Exit For
                End If
            Else
                IsZeroOrEmpty = False
                Exit For
            End If
        Next cell

        ' Wenn die gesamte Spalte leer oder 0 ist, löschen Sie die Spalte
        If IsZeroOrEmpty Then
            ws.Columns(CurrentCol).Delete
        End If
    Next CurrentCol
End Sub

Um den Code auszuführen:

  1. Drücken Sie ALT + F11, um den VBA-Editor zu öffnen.
  2. Einfügen eines neuen Moduls durch Rechtsklick im Projektfenster > Einfügen > Modul.
  3. Fügen Sie den obigen Code in das Modulfenster ein.
  4. Schließen Sie den VBA-Editor.
  5. Führen Sie die Prozedur LoescheLeereSpalten aus, indem Sie ALT + F8 drücken, die Prozedur auswählen und Ausführen klicken.