Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
912to916
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
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Do While

Do While
10.10.2007 11:13:23
goldfoil
Hallo Zusammen,
ich sitze mal wieder vor einem Problem und bräuchte Hilfe. Ich habe eine Do While Schleife und die ist aber bei 1000 Zeilen und 100 Spalten ziemlich langsam.
Do While Cells(Zeile, 2) "" And Cells(Zeile, 10) ""
If Cells(Zeile, 2) = K And a = "0" Then
Rows(Zeile).Hidden = False
ElseIf Cells(Zeile, 2) = K And (Freigabe) And Cells(Zeile, 10) = a Then
Rows(Zeile).Hidden = False
Else
Rows(Zeile).Hidden = True
End If
Zeile = Zeile + 1
Loop
Könnte mir bitte jemand weiterhelfen?
Vielen Dank im Voraus.
vlg goldfoil

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Do While
10.10.2007 11:19:00
Andi
Hi,
eine deutliche Beschleunigung könnte schon
Application.ScreenUpdating = False
am Anfang und
Application.ScreenUpdating = True
am Ende Deines Makros bewirken.
Schönen Gruß,
Andi

AW: Do While
10.10.2007 11:46:00
goldfoil
Hallo Andi,
vielen Dank für Deine Antwort. Ist auch schon besser, doch es dauert immer noch 2 Minuten. Hättest Du noch einen anderen Vorschlag?
vlg

AW: Do While
10.10.2007 12:27:15
Andi
Hi,
is zwar ungetestet, aber probier mal dies aus; normalerweise ist for...each schneller als do...loop.
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range("B1:B" & Application.WorksheetFunction.Min(Array(Range("B65536").End(xlUp).Row, Range("J65536").End(xlUp).Row)))
If c = K And a = "0" Then
Rows(c.Row).Hidden = False
ElseIf c = K And (Freigabe) And c.Offset(0, 8) = a Then
Rows(c.Row).Hidden = False
Else
Rows(c.Row).Hidden = True
End If
Application.ScreenUpdating = True
Schönen Gruß,
Andi

Anzeige
AW: Do While
10.10.2007 12:56:18
goldfoil
Hallo Andi,
vielen Dank!!! Werde es gleich mal ausprobieren!!!
lg goldfoil

AW: Do While
11.10.2007 08:31:00
goldfoil
Hallo Andi,
leider muss ich Dich nochmals bemühen, weil ich zu dumm bin anscheinend. Ich bekomme nun die ganze Zeit den Laufzeitfehler 1004 und habe keine Ahnung wie ich den wieder wegbringe?
HILFE.
lg goldfoil

AW: Do While
11.10.2007 12:42:00
Wolli
Hallo Goldfoil, kannst Du bitte 1.) den ganzen Code posten (wäre interessant, wo K und a und Freigabe herkommen) und 2.) sagen, in welcher Zeile der Fehler auftritt? (Fehler - Debuggen - wo isses gelb?) Dann kommen wir der Sache auf die Spur! Gruß, Wolli

Anzeige
AW: Do While
11.10.2007 14:49:36
goldfoil
Hallo Wolli,
leider habe ich im Mom keinen Zugriff, aber das mit dem For each .... wird gelb.
Kann es an der Deklaration liegen?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
?
Danke schon mal!
lg goldfoil

AW: Do While
12.10.2007 09:31:00
Wolli
Hi goldfoil, nein, es kann eigentlich nicht an der Deklaration liegen, selbstverständlich kannst Du auch in einer Ereignisprozedur "dim c as range" schreiben. Hast Du eigentlich "Option Explicit" über dem Code stehen? Damit zwingst Du Dich, alle Variablen zu deklarieren - so verhindert man haufenweise Flüchtigkeitsfehler. (VBA-Editor - Extras - Optionen - Editor - Variablendeklaration erforderlich).
Letzte Vermutung: Hast Du u.U. das NEXT nicht an der richtigen Stelle?
So, und ab jetzt gilt: Kein Code - kein Tipp! Wir fischen im Trüben.
Gruß, Wolli

Anzeige
AW: Do While
12.10.2007 01:48:31
Daniel
Hi
schneller gehts, wenn du ne Hilfsspalte einfügst, und dort ne Formel reinschreibst, die einen bestimmten Wert liefert, wenn die Zeile ausgeblendet werden soll und einen anderen, wenn sie sichtbar bleiben soll.
dann kannst du den Autofilter verwenden und bist wesentlich schneller als die Schleife.
(vermutlich bist du dann sogar bei eingabe von Hand schneller als dein Makro)
Gruß, Daniel
beispiel, wie so ein Code aussehen könnte, es werden alle Zeilen ausgeblendt, die ein X in Spalte A enthalten

AW: Do While
12.10.2007 08:30:00
goldfoil
Hallo Daniel,
das funktioniert leider nicht, weil der Code vorher noch einige Abfragen enthält.
Aber vielen Dank.
Viele Grüße
goldfoil

Anzeige
AW: Do While
12.10.2007 19:39:43
Gerd
Hallo Goldfoil,
teste mal.

Sub test()
Dim K As String, Freigabe As Boolean, a As String
Dim Zeile As Long
Dim ersteZeile As Long
Dim vnt() As String
Dim index As Long
K = "zeigen"
a = "0"
Freigabe = True
ersteZeile = 2
Zeile = ersteZeile
Do While Cells(Zeile, 2)  "" And Cells(Zeile, 10)  ""
If Cells(Zeile, 2) = K Then
If a = "0" Or (Freigabe And Cells(Zeile, 10) = a) Then
ReDim Preserve vnt(index)
vnt(index) = Rows(Zeile).Address
index = index + 1
End If
End If
Zeile = Zeile + 1
Loop
Rows(CStr(ersteZeile) + ":" + CStr(Zeile - 1)).Hidden = True
Range(Left$(Join(vnt, ","), Len(Join(vnt, ",")))).EntireRow.Hidden = False
End Sub


Gruß Gerd

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige