Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro auf markierte Zeilen anwenden!

Makro auf markierte Zeilen anwenden!
24.01.2020 10:28:06
RaJ5614
Hallo zusammen,
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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro auf markierte Zeilen anwenden!
24.01.2020 10:36:52
Daniel
Hi
set Bereich = Intersect(Selection.EntireRow, Range(Columns(1), Columns(179))
Gruß Daniel
AW: Klammer vergessen
24.01.2020 10:37:49
Daniel
set Bereich = Intersect(Selection.EntireRow, Range(Columns(1), Columns(179)))
AW: Klammer vergessen
27.01.2020 07:25:45
RaJ5614
Hallo Daniel und Werner,
danke für eure prompte Hilfestellung. Habe Daniels Lösung nun eingetragen und muß sagen es funktioniert wunderbar. Danke vielmals!
LG Jürgen
AW: Makro auf markierte Zeilen anwenden!
24.01.2020 11:20:42
Werner
Hallo,
meinst du so?
Sub Schaltfläche1_Klicken()
Dim i As Long, rngSpalten As Range
For i = 1 To 179
If WorksheetFunction.CountA(Intersect(Selection, Columns(i))) = 0 Then
If rngSpalten Is Nothing Then
Set rngSpalten = Cells(Selection.Row, i)
Else
Set rngSpalten = Union(rngSpalten, Cells(Selection.Row, i))
End If
End If
Next i
If Not rngSpalten Is Nothing Then
rngSpalten.EntireColumn.Hidden = True
End If
Set rngSpalten = Nothing
End Sub
Gruß Werner
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige