ich bin neu hier und habe so gut wie keine VBA Kenntnisse. Ich versuche gerade eine mächtige Excel Tabelle durch das markieren von Zeilen dazu zu zwingen alle leeren Spalten in dieser Zeile auszublenden.
Mein Code dafür sieht wie folgt aus:
Sub LeerZeileSpaltenAusblenden()
Dim rngBereich As Range, rngZeilen As Range, rngSpalten As Range
Dim z As Long, s As Long, x As Long
Set rngBereich = ActiveSheet.Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 179))
Call Einblenden(rngBereich)
With rngBereich
z = .Rows.Count
s = .Columns.Count
For x = 1 To z
If WorksheetFunction.CountBlank(.Rows(x)) = s Then
If rngZeilen Is Nothing Then
Set rngZeilen = .Rows(x)
Else
Set rngZeilen = Union(rngZeilen, .Rows(x))
End If
End If
Next
For x = 1 To s
If WorksheetFunction.CountBlank(.Columns(x)) = z Then
If rngSpalten Is Nothing Then
Set rngSpalten = .Columns(x)
Else
Set rngSpalten = Union(rngSpalten, .Columns(x))
End If
End If
Next
If Not rngZeilen Is Nothing Then rngZeilen.EntireRow.Hidden = True
If Not rngSpalten Is Nothing Then rngSpalten.EntireColumn.Hidden = True
End With
End Sub
Sub Einblenden(rngEinblenden)
rngEinblenden.EntireRow.Hidden = False
rngEinblenden.EntireColumn.Hidden = False
End Sub
Das funktioniert so weit schon ganz gut aber nur auf die erste Zeile der markierten Zeilen.
Jetzt habe ich mal
Set rngBereich = Selection
eingetragen
Dann habe ich z.B. Zeile eine Markierung von A252 bis FW257 gesetzt und das Makro ausgeführt und es tut was es soll. Leider ist es mühsam jedes mal einen so großen Bereich zu markieren.
Gibt es eine Möglichkeit anstatt
Set rngBereich = ActiveSheet.Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 179))
oder
Set rngBereich = Selection
eine andere Codezeile zu verwenden die mir das Makro richtig ausführt wenn ich Zeile 252-257 in einer beliebigen Spalte markiere?
Ich wäre sehr dankbar für Anregungen und Hilfestellungen.
LG Jürgen