Anzeige
Archiv - Navigation
1644to1648
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

Ein/ausblenden von zeilen zu langsam

Ein/ausblenden von zeilen zu langsam
14.09.2018 18:48:27
zeilen
Hallo Leute,
vorab gehöre ich zu den unwissenden was VBA angeht, trotzdem versuche ich soweit es meine Hirnzellen zulassen mich damit auseinander zu setzen (Smile).
Habe ein Code gemacht, der mir ermöglicht Zeilen aus und einzublenden wenn in ein bestimmten Bereich der Spalte A ein Datum eingetragen wird.
Im Grunde genommen möchte ich das die Zeilen (40:1009) ausgeblendet sind und nur wenn die Datumseinträge in der Spalte A sich unten vermehren und denn ausgeblendeten Zeilen (beisp. 10 Zeilen) nahe kommen, diese sich einblenden, so das immer die selben anzahl von Zeilen eingeblendet bleiben , die anderen Zeilen (bis 1009) sollen ausgeblendet sein.Der Code läuft zwar, doch er macht das Arbeitsblatt sehr langsam…aber sehr langsam. Bei jeden Datums Eintrag in Spalte A muss immer mehrere Sekunden gewartet werden, damit erschwert es mehrere Einträge zu machen. Hat jemand eine Idee wie ich diesen Code schneller machen kann, ohne große Warteschlange bei jeden Eintrag?
--------------------------------------------------
Sub HideUnhideprocedure()
ActiveWorkbook.ActiveSheet.Unprotect ("pass1234")
Dim c As Range
Dim counter1, counter2 As Integer
Range("A20:A1009").EntireRow.Hidden = False
counter1 = 20
counter2 = 19
For Each c In Range("A20:A1009")
If c.Value = "" Then
counter2 = counter2 + 1
'c.EntireRow.Hidden = True
Else
counter1 = counter1 + 1
counter2 = counter2 + 1
'c.EntireRow.Hidden = False
End If
Next c
If counter1 counter2 Then
Range("A" & counter1 + 15 & ":A" & counter2).EntireRow.Hidden = True
End If
ActiveWorkbook.ActiveSheet.Protect ("pass1234")
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveWorkbook.ActiveSheet.Unprotect ("pass1234")
Dim c As Range
Dim counter1, counter2 As Integer
Range("A20:A1009").EntireRow.Hidden = False
counter1 = 20
counter2 = 19
For Each c In Range("A20:A1009")
If c.Value = "" Then
counter2 = counter2 + 1
'c.EntireRow.Hidden = True
Else
counter1 = counter1 + 1
counter2 = counter2 + 1
'c.EntireRow.Hidden = False
End If
Next c
If counter1  counter2 Then
Range("A" & counter1 + 25 & ":A" & counter2).EntireRow.Hidden = True
End If
filter
ActiveWorkbook.ActiveSheet.Protect ("pass1234")
End Sub

-------------------------------------------------------------
Danke im Voraus für jede Hilfe.
Niko

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein/ausblenden von zeilen zu langsam
14.09.2018 20:08:25
zeilen
1) Was macht "filter"?
2) Was ist denn mit dem Code "Sub HideUnhideprocedure()"? Wieso hast du denn diesen Code auch noch gepostet? Ist der auch irgendwie aktiv?
AW: Ein/ausblenden von zeilen zu langsam
14.09.2018 21:27:08
zeilen
Hi onur,
der Code den ich gepostet habe funktioniert, doch er ist zu langsam. Mir geht es darum diesen Code irgendwie schneller zu machen, da er jedes Mal sehr lange braucht bis er durchläuft.
Der Code von Gerd ist echt super, doch ich brauche ihn ein bisschen schneller, so dass ich bei jeden Eintrag nicht eine Sekunden starre habe, deswegen habe ich auch geschrieben ob es vielleicht die mit cases überbrückt werden kann.
Danke dir auch, dass du dir die Zeit genommen hast mein VBA Salat durchzulesen (smile).
Niko
Anzeige
AW: Ein/ausblenden von zeilen zu langsam
14.09.2018 21:39:02
zeilen
Hi Niko,
Du erwartest Hilfe, aber beantwortest keine meiner Fragen?
Gruß
Onur
AW: Ein/ausblenden von zeilen zu langsam
14.09.2018 22:06:40
zeilen
Hi onur,
1)Was macht "filter"?
Was meinst du mit filter?
2)Was ist denn mit dem Code "Sub HideUnhideprocedure()"? Wieso hast du denn diesen Code auch noch gepostet? Ist der auch irgendwie aktiv?
Den Code denn ich gepostet habe, habe ich zusammen gebastelt.
Er funktioniert in mein Arbeitsblatt, doch wie gesagt er ist zu langsam.
Falls ich wieder etwas nicht verstanden habe, bitte ich um Verständnis für mein derzeitiges VBA wissen (besser gesagt Unwissen :-).
Danke,
Niko
Anzeige
AW: Ein/ausblenden von zeilen zu langsam
15.09.2018 10:12:22
zeilen
Ich meine das hier:
If counter1 counter2 Then
Range("A" & counter1 + 25 & ":A" & counter2).EntireRow.Hidden = True
End If
filter
ActiveWorkbook.ActiveSheet.Protect ("pass1234")
AW: Ein/ausblenden von zeilen zu langsam
15.09.2018 11:44:47
zeilen
Hallo onur,
jetzt sehe ich was du meinst :-)
der „Filter“ ist eigentlich dafür gedacht dass erst dann leere Zeilen zum Anzeigen gebracht werden soll wenn eine gewisse menge von Zellen in Spalte A mit datum ausgefühlt sind.
Doch wie gesagt, es war ein Kuddelmuddel das Ganze von mir (habe Copy/Paste System angewandt von verschiedenen codes die ich im internet gefunden habe :-)
Dieser Code von Gerd beinhaltet eigentlich alles was ich machen wollte, vielleicht ist es mit diesem Code verständlicher was ich machen möchte.
Der Code von Gerd funktioniert super, möchte nur ein kleines fein Tuning machen, weiß nur nicht wie :-).
a) Ob es eine zusätzliche Möglichkeit gibt den Code schneller zu machen.
b) die Anzahl der eingeblendeten Zeilen in Relation zu den gefüllten Zellen sollen gleichbleibend sein.
c) * Die Zeilen die ich verstecken möchte sind im Bereich A40: V1009...Weiß nicht ob dies helfen tut es schneller zu machen.
----------------------------------------------------------
Me.Unprotect ("pass1234")
Set Bereich = Intersect(Target, Range("A20:A1009"))
If Not Bereich Is Nothing Then
Application.EnableEvents = False
Range("A20:A1009").EntireRow.Hidden = False
Range("A" & 25 + WorksheetFunction.CountA( _
Range("A20:A1009")) & ":A1009").EntireRow.Hidden = True
End If
Me.Protect ("pass1234")
Application.EnableEvents = True
Application.Calculation = Berechnung
Application.ScreenUpdating = True
End Sub
---------------------------------------------------------------
Hoffe dass ich es verständlicher machen konnte, als was ich bis jetzt geschrieben habe.
Ps. Danke nochmal für das nachhacken.
Niko
Anzeige
AW: Ein/ausblenden von zeilen zu langsam
15.09.2018 22:40:02
zeilen
Wenn du es schneller haben willst - kannst du die Datei posten?
AW: Ein/ausblenden von zeilen zu langsam
15.09.2018 23:38:31
zeilen
anbei die Datei passwort: "pass1234"
mit rechter maus taste in spalte a und b automatischer datumseintrag.
sry hat lange gedauert bis ich sie auf unter 300kb abspeichern konnte.
https://www.herber.de/bbs/user/123973.xlsm
AW: Ein/ausblenden von zeilen zu langsam
15.09.2018 23:44:15
zeilen
nochmal ohne verknüpfungen und auf 299 zeilen reduziert so das es unter 300kb ist.
https://www.herber.de/bbs/user/123974.xlsm
Bitte diese benutzen, die vorherige wird dich nur irritieren.
Thx
Niko
Anzeige
AW: Ein/ausblenden von zeilen zu langsam
14.09.2018 20:44:48
zeilen
Moin Niko!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, Zelle As Range
Me.Unprotect ("pass1234")
Set Bereich = Intersect(Target, Range("A20:A1009"))
If Not Bereich Is Nothing Then
Range("A20:A1009").EntireRow.Hidden = False
Range("A" & 25 + WorksheetFunction.CountA( _
Range("A20:A1009")) & ":A1009").EntireRow.Hidden = True
End If
Me.Protect ("pass1234")
End Sub

Gruß Gerd
AW: Ein/ausblenden von zeilen zu langsam
14.09.2018 21:16:46
zeilen
Vielen Dank für die schnelle Antwort…wow ging das schnell (smile).
Habe dein Code ausprobiert und funktioniert super…doch es braucht immer noch ein paar Sekunden bis es durchläuft.
Könnte man es eventuell mit Cases machen? …so könnte diese Prozedur dann als Beispiel nur alle 20 oder 30 Zeilen durchlaufen, wo man dazwischen dieses durchlaufen für jeden Eintrag einsparen könnte….ist nur ein Gedanke (smile).
Nochmals Danke, echt super diese Vereinfachung.
Niko
Anzeige
AW: Ein/ausblenden von zeilen zu langsam
14.09.2018 22:33:12
zeilen
Hallo Niko,
mehr habe ich nicht anzubieten, wenn von oben nach unten die Anzahl der
eingeblendeten Zeilen in Relation zu den gefüllten Zellen gleichbleibend sein soll.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range, Berechnung As Long
Berechnung = Application.Calculation
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Me.Unprotect ("pass1234")
Set Bereich = Intersect(Target, Range("A20:A1009"))
If Not Bereich Is Nothing Then
Application.EnableEvents = False
Range("A20:A1009").EntireRow.Hidden = False
Range("A" & 25 + WorksheetFunction.CountA( _
Range("A20:A1009")) & ":A1009").EntireRow.Hidden = True
End If
Me.Protect ("pass1234")
Application.EnableEvents = True
Application.Calculation = Berechnung
Application.ScreenUpdating = True
End Sub
Gruß Gerd
Anzeige
AW: Ein/ausblenden von zeilen zu langsam
14.09.2018 22:51:14
zeilen
Hallo Gerd,
VIELEN,VIELEN DANK :-)
Dein Code ist echt ein Lichtstrahl in meinen dunklen VBA Tunel….für ein Laien wie mich ist es ein aha Erlebnis.
Konfuzius hat mal gesagt “Unwissenheit ist die Nacht des Geistes, eine Nacht ohne Mond und Sterne.“…Danke dir für den Stern :-)
Funktioniert Super…. Die Wartezeit ist zwar nicht auf null gegangen doch mit Sicherheit hat sie sich fast halbiert.
Das Forum ist echt Super…habe so viele Sachen hier gelernt…kann es nur empfehlen.
Falls noch jemand zum Code von Gerd eine Zusatz Idee hat um es noch schneller zu machen….. ist immer willkommen.
Danke :-)
Niko
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige