Anzeige
Archiv - Navigation
1184to1188
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

Gesucht: Schnellster Code um Zeilen Hidden = false

Gesucht: Schnellster Code um Zeilen Hidden = false
Holger
Hallo,
ich habe einen Rangebereich. In diesem können eine oder mehrere Zeilen die Eigenschaft Hidden = true haben. Nun möchte ich per Makro die Zeilen wieder einblenden, wenn eine Zelle einen gewissen Wert hat.
Meine übliche Vorgehensweise in so einem Fall:
Rangebereich definieren
Durchschleifen
If wert erfüllt dann Cell.entirerow.hidden = false
So würde ich das machen.
Gibt es noch was schnelleres oder besseres? Ich will mich ja auch weiterentwickeln.
Gruß+Dank für alle Antworten
Holger

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Gesucht: Schnellster Code um Zeilen Hidden = false
27.10.2010 13:56:51
Rudi
Hallo,
erst alle in einer variablen (Range) sammeln und dann einblenden.
Motto:
dim rvisible as Range, c as Range
for each c in Rangebereich
if wert erfüllt then
if rvisible is nothing then
set rvisible=c
else set rvisible=union(rvisible,c)
end if
next
if not rvisible is nothing then rvisible.entirerow.hidden=false
Gruß
Rudi
Wie immer: Klappt
27.10.2010 14:53:45
Holger
Hallo Rudi,
Vielen Dank. Sitz, passt und hat keine Luft ;), funktioniert.
Wirklich sehr schön! Danke Dir!
Hier mein angepasster Code:
Option Private Module
Option Explicit
Sub RowsHiddenFalse()
Dim rngVisible As Range, rngBereich As Range, rngmycell As Range
Dim intLastRow As Integer
Dim strUser As String, strUser2 As String
intLastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
If intLastRow 

Anzeige
Schneller mit Hilfsspalte
27.10.2010 14:06:03
Klaus
Hallo Holger,
am schnellsten mit Hilfsspalte und ganz ohne Schleife:
unbenutzte Spalte (zB Spalte Z) mit Formel füllen:
=WENN(Bedingungerfüllt;"";1/0)
das ergibt für jede auszublendende Spalte #DIV/0!
Jetzt können wir über "Gehe Zu Inhalte / Fehlerwerte" (Rekorder) alle fehlerhaften Zellen auf einmal anfassen. In VBA sieht das dann so aus:
Columns("Z:Z").SpecialCells(xlCellTypeFormulas, 16).Select
Zum ausblenden der betroffenen Zeilen schreiben wir das um in:
Columns("Z:Z").SpecialCells(xlCellTypeFormulas, 16).EntireRow.Hidden = True
Schneller gehts m.M.n. nicht! Die unschöne Hilfsspalte Z im anschluss löschen oder einfach ausgeblendet lassen.
Grüße,
Klaus M.vdT.
Anzeige
AW: Schneller mit Hilfsspalte
27.10.2010 14:07:35
Rudi
Hallo,
er will die Zeilen wieder einblenden!
Gruß
Rudi
was ist nun schneller?
27.10.2010 15:53:26
Klaus
Hallo Rudi,
in meinem Test hat sich bei großen Bereichen die Union-Methode als langsamste (!!!) herausgestellt, während das Zeilenweise ausblenden erfreulich fix geht.
https://www.herber.de/bbs/user/72069.xls
(um das Upload klein zu halten, sind nur 300 Zeilen gefüllt. Der Test lief mit bis zu 7500 Zeilen).
Da ich das Ergebniss selbst kaum glauben mag, kannst du mal in den Code schauen ob ich da was durcheinander geworfen habe? Vielleicht liegts auch an meiner ollen Kiste ...
Grüße,
Klaus M.vdT.
Anzeige
AW: was ist nun schneller?
27.10.2010 16:19:41
Rudi
Hallo,
Code sieht OK aus. Die Ergebnisse kann ich aber nicht bestätigen.
Bei 3000 Zeilen
Zeile für Zeile: 39,3, Range: 2,1, Formel: 0,2
Olle Kiste: 7 Jahre alter P4, 2,4 Mhz, 512 MB RAM
Gruß
Rudi
Bizarr ...
28.10.2010 07:56:54
Klaus
Hi Rudi,
... ich werd auch mal auf anderen Kisten testen. Bei mir ist reproduzierbar die Methode mit Union am langsamsten.
Ich halte für Bereiche ab ein paar hundert Zeilen aber eisern an der Formellösung mit Hilfsspalte fest :-)
Grüße,
Klaus M.vdT.
AW: Schneller mit Hilfsspalte
27.10.2010 14:17:52
Holger
Hallo Klaus,
Danke für deinen Code aber Hilfsspalte und Formel kommt in meinem Fall nicht in Frage.
Die Befehle merke ich mir trotzdem mal.
Gruß+Dank
Holger
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige