Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Leerzeilen ausblenden - Code Optimierung

Leerzeilen ausblenden - Code Optimierung
harald
Hallo und guten Morgen
Ich habe in einer Tabelle in Spalte A das Datum (Tage) und in den nächsten Spalten werden die _ Arbeitsstunden eingetragen. Da nicht an jedem Tag in einer der Spalten ein Wert steht, versuche ich mit dem untenstehenden Makro die Leerzeilen auszublenden.

Sub leerzeilen_ausblenden()
Dim rng As Range
Application.ScreenUpdating = False
For Each rng In Range("B7:B600")
If rng.Value = "" And rng.Offset(0, 1).Value = "" And rng.Offset(0, 2).Value = "" And rng.  _
_
Offset(0,3).Value = "" Then
Rows(rng.Row).EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub

Hier nun meine Fragen:
Gibt es die nicht eine bessere Möglichkeit anstatt mit "And rng.Offset(0, 4).Value = "" " die Spalten abzufragen ob sie leer sind?
Oder ist es effizienter eine Hilfsspalte einzufügen und mit der Funktion Summe (z.B =Summe(B7:E7) zu schauen ob Werte vorhanden sind oder nicht?
In der Zeile "For Each rng In Range("B7:B600")" gebe ich den Bereich fix vor. Wie kann ich nur den tatsächlich verwendeten Bereich angeben?
Zur Ansicht hier noch die Excelmappe.
https://www.herber.de/bbs/user/74149.xls
Besten Dank im voraus
harald
Anzeige

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

Betreff
Benutzer
Anzeige
so gehts ...
28.03.2011 06:27:22
Matthias
Hallo
    If Range("B" & rng.Row & ":B" & rng.Row) = "" Then
Rows(rng.Row).EntireRow.Hidden = True
End If
Gruß Matthias
AW: Leerzeilen ausblenden - Code Optimierung
28.03.2011 06:31:35
Mustafa
Hallo Harald,
ich weiss nicht ob es schneller oder effizienter ist aber so könnts gehen :
Sub leerzeilen_ausblenden()
Dim rng As Range
Dim lngLast As Long
Dim lngLastB As Long, lngLastC As Long, lngLastD As Long, lngLastE As Long
Application.ScreenUpdating = False
lngLastB = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
lngLastC = ActiveSheet.Cells(Rows.Count, 3).End(xlUp).Row
lngLastD = ActiveSheet.Cells(Rows.Count, 4).End(xlUp).Row
lngLastE = ActiveSheet.Cells(Rows.Count, 5).End(xlUp).Row
lngLast = WorksheetFunction.Max(lngLastB, lngLastC, lngLastD, lngLastE)
For Each rng In Range("B7:B" & lngLast)
'If rng.Value = "" And rng.Offset(0, 1).Value = "" And rng.Offset(0, 2).Value = "" And rng. _
Offset(0, 3).Value = "" Then
'    Rows(rng.Row).EntireRow.Hidden = True
'End If
If WorksheetFunction.CountBlank(Range(Cells(rng.Row, 2), Cells(rng.Row, 5))) = 4 Then
Rows(rng.Row).EntireRow.Hidden = True
End If
Next
Application.ScreenUpdating = True
End Sub
Ausserdem wird immer nur bis zur letzten befüllten Zeile im Bereich B:D ausgeblendet.
Und der Bereich ist variabel bis zum Tabellenende.
Rückmeldung obs hilft wäre nett.
Gruß aus der Domstadt Köln.
Anzeige
AW: Leerzeilen ausblenden - Code Optimierung
28.03.2011 07:38:55
harald
Hallo
und vielen Dank für die prompte Beantwortung. Ich kann leider erst am Abend das Ganze genauer anschauen, aber helfen wird es sicher.
mfg
harald
Leerzeilen ausblenden-noch ne Version
28.03.2011 11:15:28
Rudi
Hallo,
Sub leerzeilen_ausblenden()
Dim rng As Range
Application.ScreenUpdating = False
For Each rng In Range("B7:B600")
rng.EntireRow.Hidden = Application.CountA(rng.Resize(, 4)) = 0
Next
Application.ScreenUpdating = True
End Sub

Gruß
Rudi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige