Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
948to952
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
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilen ausblenden wenn 0 in Spalte A

Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 21:10:01
Martin
Hallo Leute!
Ich habe eine Tabelle mit 3000 Zeilen. Ich möchte nun jede Zeile ausblenden in der in der Spalte A eine 0 steht die durch eine Formel oder eine Funktion gereriert wird. Das Makro soll ausgeführt werden wenn ich auf das Blatt wechsle.
Ich hab im Netz zwar viel über das Thema gefunden, allerdings waren die Lösungen mit 3000 Zeilen sehr langsam oder ich hab sie für mein beispiel nicht anpassen können.
Ich hoffe ihr könnt mir helfen.
Danke schon jetzt dafür.
lg
martin

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

Betreff
Datum
Anwender
Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 21:20:27
Lenhard
Moin Martin!
Schau mal hier:
https://www.herber.de/forum/archiv/144to148/t146665.htm
Ich habe daraus gerade das gemacht:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i As Long, laR As Long
laR = Cells(Rows.Count, 4).End(xlUp).Row
For i = laR To 1 Step -1
If Cells(i, 1).Text = "" Then
Cells(i, 1).EntireRow.Hidden = True
End If
Next i
End Sub


....ist es das, was Du gesucht hast?!
Gruß
Lenhard

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 21:31:49
Martin
Hallo Lenhard!
Danke für deine schnelle Antwort!
Das Makro hab ich auch schon gefunden und ich hab auch versucht es anzupassen...
Allerdings schaff ich es nicht dass mir die Zeilen wirklich ausgeblendet werden wenn ich auf das Tabellenblatt klicke.
Auch dein Code funktioniert leider nicht. Ich gehe mit rechts auf das Tabellenbatt - Code anzeigen und füge es dort ein.
Geht nicht...
ich habs auch schon mit

Private Sub Worksheet_Activate()

versucht. Aber auch hier hatt ich keinen Erfolg.
Kannst du mir bitte nochmal helfen?
lg
Martin

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 22:08:00
Lenhard
Hallo nochmal Martin!!
Also bei mir hat es geklappt. Zwar nicht gerade, wenn man das Tabellenblatt auswählt (...das hatte ich leider in Deinen Ausführungen "überlesen". Sorry!) ...aber wenn man die Zellen verläßt.
Vielleicht liegt es an verschiedenen Excel-Versionen (...und dann müssen die Excel-Cracks hier im Forum ran!).
Rufe mal den VBA-Editor mittels "Alt+F11" auf und doppelklicke links auf das Klassenmodul des betreffenden Tabellenblattes im Dateibaum. Kopiere den Code in das Tabellenblatt unter "Option Explicit".
Gruß
Lenhard

AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 22:30:58
Lenhard
Hallo nochmal Martin!
Ich habe da mal kurz folgendes gebastelt. Kuckst Du hiär:
https://www.herber.de/bbs/user/49662.xls
Wenn Du im "Modul1" unter "Option Explicit" noch "Option Private Module" einfügst, erscheint das Makro "Ausblenden" nicht unter dem Menü > Extras > Makros usw. usw.
Das Makro "Ausblenden" wird aktiviert über dem Code...

Private Sub Worksheet_Activate()
Ausblenden
End Sub


...der nun im betreffenden Tabellenblatt "liegt".
Ich hoffe, dass Dir diese nun ein wenig weiterhilft!!!
Ich bin nun müd und geh zur Ruh (...muss morgen sehr früh hoch!!) und mache meine Äuglein zu!!
Gruß
Lenhard

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
06.02.2008 09:26:00
Martin
Hallo Lenhard!
Danke für deine Antwort!
Es fuktioniert jetzt auch super! Allerdings ist das ganze immer noch ein bisschen langsam.
Mein Problem ist, das ich eben das Tabellenblatt auf dem das Macro angewendet werden soll mit einem Makro bis zu 200 mal ausdrucken lasse. Das Tabellenblatt ist voller sverweise die sich bei jedem druck entsprechend anpassen. es werden bei jedem druck auch unterschiedliche zeilen ausgeblendet.
hier liegt also mein problem. denn wenn jedesmal ca. 150 zeilen ausgeblendet werden, diese aber immer unterschiedlich sind, bin ich mit drucken eine halbe ewigkeit am weg.
Ich verwende ein makro zum zeilen löschen. das funktioniert dafür auch super! ich hab jetzt versucht das irgendwie anzupassen indem ich statt

EntireRow.Delete einfach EntireRow.Hide = True

gemacht habe
Das wäre von der Geschwindigkeit her perfekt, allerdings funktioniert es auch nicht ganz. es blendet mir zwar die zeilen aus, aber es verschiebt mir die inhalte in die ersten zeilen und damit kann ich den ganzen aufbau des blattes vergessen. die werte müssen in den jeweiligen zellen stehen bleiben.
hier das makro:


Sub Ausblenden2()
Columns(1).Insert
With Range("A1:A" & Cells(65536, 2).End(xlUp).Row)
.FormulaR1C1 = "=if(RC2=0,true,row())"
.Formula = .Value
.CurrentRegion.Sort key1:=Cells(1, 1), order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Hidden = True
.EntireColumn.Delete
End With
End Sub

Ich bin in VBA leider zu schach um das zu verstehen. Kannst du mir hier weiterhelfen?
Ich habe noch eine Beispieldatei angehängt an der man erkennen soll was das Makro macht. Es läuft momentan über eine Schaltfläche da man sonst nicht sieht was es tut.
https://www.herber.de/bbs/user/49669.xls
Danke
LG
Martin

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
06.02.2008 15:19:08
Chris
Servus Martin,
so:

Sub Ausblenden2()
'Bestimmte Zeilen ausblenden
'wenn 0 in Spalte B
Columns(1).Insert
With Range("A1:A" & Cells(65536, 2).End(xlUp).Row)
.FormulaR1C1 = "=if(RC2=0,true,row())"
.Formula = .Value
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Hidden = True
.EntireColumn.Delete
End With
End Sub


einfach das Sortieren rausnehmen.
(.CurrentRegion.Sort...)
Gruß
Chris

Danke!!! Funktioniert!!!
08.02.2008 09:30:32
Martin
Hallo Chris, Strawberry und Lenhard!
Erstmal danke für eure Antworten und sorry dass ich mich erst jetzt melde!!! Aber ich hab die letzten Tage vollstress gehabt. Jetzt gehts wieder besser!
Chris! Super danke! Es funktioniert ohne das sortieren perfekt und auch so schnell wie ich mir das vorstelle.
Lenhard! Danke für deine Hilfe! Es stimmt schon dass dein Vorschlag funktioniert hat, aber das Makro geht alle Zeilen nacheinander druch und überprüft sie. Das dauert mir bei 3000 Zeilen einfach zu lange da ich das Blatt per makro bis zu 200 mal mit immer anderen Werten drucken lasse und bei jedem druck ändern sich die Zeilen die ausgeblendet werden sollen.
Strawberry! Danke für den Tipp mit der Berechnung. Leider funktioniert das auch nicht da sich auf dem Blatt und in der ganzen Mappe jederzeit etwas berechnet werden muss.
Ich habe auch das Problem gelöst das die Zeilen die ausgeblendet sind sich wieder einblenden wenn sich der Wert in der Spalte A durch eine WENN Funktion ändert. Ich hab den Code einfach nochmal verwendet um die Spalte nach 1 zu überprüfen und die Zeilen dann einblenden lassen.
Alle Zeilen werden gleichzeitig ein- und ausgeblendet.
Lösung:
Ich habe diesen Code in ein Modul geschrieben:

Sub Ausblenden()
'Zeilen ausblenden wenn 0 und einblenden wenn 1 in Spalte A steht
Columns(1).Insert
With Range("A1:A" & Cells(65536, 2).End(xlUp).Row)
'Einblenden
.FormulaR1C1 = "=if(RC2=1,true,row())"
.Formula = .Value
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Hidden = False
'Ausblenden
.FormulaR1C1 = "=if(RC2=0,true,row())"
.Formula = .Value
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Hidden = True
.EntireColumn.Delete
End With
End Sub

Und mit diesem Code starte ich das Modul bei Klick auf das Tabellenblatt:


Private Sub Worksheet_Activate()
Ausblenden
End Sub

Das funktioniert einwandfrei!
Nochmals, vielen dank euch dreien!
lg
Martin

Anzeige
AW: kleine Anmerkung
08.02.2008 14:14:00
Chris
Servus Martin,
aber trotzdem vorsicht, das Makro ist schnell, weil es nur die Specialcells abarbeitet, die in der zusätzlich eingefügten Spalte eingetragen wurden, und genau beim Einfügen der Spalte kann es zu Problemen kommen, wenn in Spalte 256 ("IV") schon Einträge sind.
Dann kann nämlich keine Spalte mehr eigefügt werden.
Gruß
Chris

AW: kleine Anmerkung
08.02.2008 19:13:00
Martin
Hallo Chris!
Das Problem hab ich nicht da ich maximal 90 Spalten verwende!
Aber trotzdem vielen dank für deine Info! Beim nächsten mal könnte es ja wirklich vorkommen.
Schönen Abend und schönes Wochenende
lg
Martin

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
06.02.2008 15:59:23
Lenhard
Moin Martin! ...und auch Chris!!
Vorweg: Tschuldige, dass ich mich erst jetzt melde!! ...aber es gibt ja auch Zeiten, in denen ich mein Geld verdienen muss :-)))
Weiter: Ich bin leider - noch - nicht der VBA-Crack. Ich bastel mir selber ziemlich viel aus dem Forum zusammen und bin immer noch dabei, gewisse Logik-Zusammenhänge verstehen zu wollen.
Nun aber! ...ich habe den Vorschlag von Strawberry, wegen Deinem "Geschwindigkeitsproblem" (...da wirst Du wahrscheinlich mit Sicherheit nicht geblitzt! Kleiner Scherz!) die automatische Berechnung auszuschalten, gerade mal durchgelesen. Interessanter Ansatz und ich glaube, das könnte funktionieren.
Aber wie sieht es denn mit Deiner Dateigröße sowie den gesamten Funktionen in dieser aus? ...und wie sieht es mit Deiner Rechnerleistung aus?! Das sind ja alles Kriterien, die die Geschwindigkeit entscheidend beeinflussen. Ich persönlich versuche bei meinen Planungen für Excel-Dateien immer Strukturen zu finden, die möglichst wenig System-Ressourcen in Anspruch nehmen.
-----
Ich habe noch mal meinen und Deinen letzten Ansatz (mit dem Hinweis von Chris, das "Sortieren" auszukommentieren bzw. rauszunehmen!!) getestet. Ich finde, gemäß Deinen Fragestellungen funktioniert es doch alles. Oder?!?!? ....sonst müßtest Du Dir bitte noch mal die Mühe machen, es noch mal konkreter Darzustellen. Sorry!
Gruß
Lenhard

Anzeige
AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 21:34:00
Strawberry
Hi Martin,
ein Ansatz:

Sub BestimmteZeilenAusblenden()
'Zeilen automatisch ausblenden (bzw. einblenden), wenn in der Spalte B bestimmte Werte stehen ( _
bsp. All).
Dim rng As Range
For Each rng In Range(Cells(1, 2), Cells(65536, 2).End(xlUp))   '2 = Spalte B
If LCase(rng) = "0" Then                                      'Kriterium = 0
rng.EntireRow.Hidden = True
Else
rng.EntireRow.Hidden = False
End If
Next rng
End Sub


Grüße

AW: Zeilen ausblenden wenn 0 in Spalte A
05.02.2008 22:07:12
Martin
Hallo Strawberry!
Danke für deine Hilfe!
Allerdings hab ich auch hier das Problem, dass es mir die Zeilen nicht ausblendet wenn ich auf das Blatt klicke.
Wenn ich das Makro mit einer Schaltfläche ausführe, werden mir die Zeilen zwar ausgeblendet aber nicht mehr eingeblendet wenn nichts mehr in B steht. Ausserdem läuft es ziemlich langsam Zeile für Zeile durch.
Gibt es eventuell noch eine andere Variante?
danke schon mal im vorraus
lg
Martin

Anzeige
Versuch mal ...
06.02.2008 09:48:00
Strawberry
die automatische Berechnung auszuschalten, indem du auf manuelle Berechnung umstellst. Damit habe ich bei komplexeren Aufgaben mit Makros sehr gute Erfahrungen gemacht.
Grüße
Strawberry

319 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige