Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1204to1208
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

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige