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

Zeilen bedingt einblenden

Zeilen bedingt einblenden
24.05.2008 10:58:00
Maris
Hallo zusammen,
in meiner Excelmappe möchte ich immer nur bestimmte Zeilen eingeblendet bekommen, ansonsten sollen Sie ausgeblendet sein. ich habe zwei Bedingungen für das Zeilen einblenden!
Wenn in Zelle J21="Vielen Dank!" dann prüfe E34:64 ob "x" vorhanden, wenn ja -- dann blende diese Zeilen ein. Alles anderen sollen ausgeblendet bleiben.
Ändert sich der Inhalt von J21 "Vielen Dank!" gibt es kein "x" mehr in E34:64 dann soll dieser Zellbereich ausgeblendet sein...
Wär supi wenn mir jemand helfen könnte, hoffe es ist nicht zu kompliziert!
Vielen Dank!
Gruß
Maris

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen bedingt einblenden
24.05.2008 11:03:09
{Boris}
Hi Maris,
was spricht gegen den einen Autofilterklick nach "x"?
Grüße Boris

AW: Zeilen bedingt einblenden
24.05.2008 11:37:12
Maris
Hallo Boris,
die Sache sollte automatisiert ablaufen! Autofilter ist nicht leider nicht möglich da die Mappe nicht in Tabellenform aufgebaut ist sondern eher wie ein Formular...
Gruß
MAris

AW: Zeilen bedingt einblenden
24.05.2008 14:23:00
Matthias
Hallo Maris,
also im Grunde ist nicht der Inhalt von J21 maßgebend, sonder die "x"-e in Spalte E?
Dann kopiermal ins Codemodul des Tabellenblattes:



Private Sub Worksheet_Change(ByVal Target As Range)
Const b = "J21"
Const bx = "E34:E64"
Dim z As Range, ber As Range
Set ber = Intersect(Target, Me.Range(b))
If Not ber Is Nothing Then
Application.ScreenUpdating = False
For Each z In Me.Range(bx)
z.EntireRow.Hidden = (z.Value  "x")
Next z
Application.ScreenUpdating = True
End If
End Sub



Hier wird die Überprüfung ausgelöst, wenn die Zelle J21 geändert wurde.
Falls in J21 eine Formel steht, musst du es aber anders angehen.
Gruß Matthias

Anzeige
AW: Zeilen bedingt einblenden
24.05.2008 15:01:47
Maris
Hi Matthias,
vielen Dank für deinen Code und deine Hilfe! In J21 steht eine Wennformel
Sie sagt im prinzip wenn alle Pflichtfelder ausgefüllt dann schreibe mir Danke! in die Zelle. D.h. wurden ein Pflichtfeld ausgelassen, soll dies Überprüfung ganricht stattfinden und die zeilenen auch nicht eingeblendet werden. Wenn ich den Code ausführe passiert irgendwie nichts!
Hoffe ich habe mich verständlich ausgedrückt!
VG
Maris

AW: Zeilen bedingt einblenden
24.05.2008 15:12:00
Matthias
Hallo Maris,
das WorkSheet_Change-Ereignis gereif nicht, wenn in J21 eine Formel steht. Dann musst du das Worksheet_Calculate-Ereignis nehmen.
Nachteil ist hier, dass bei jeder Berechnung dieses Ereignis ausgelöst wird, egal welche Bereiche neu berechnet werden.
Der Code schaut dann so aus (den vorherigen kannst du löschen):

Private Sub Worksheet_Calculate()
Const b = "J21"
Const bx = "E34:E64"
Dim z As Range
If Range(b) = "Vielen Dank!" Then
'Pflichtfelder ausgefüllt:
Application.ScreenUpdating = False
For Each z In Me.Range(bx)
z.EntireRow.Hidden = (z.Value  "x")
Next z
Application.ScreenUpdating = True
Else
'Pflichtfelder nicht ausgefüllt:
Me.Range(bx).EntireRow.Hidden = True
End If
End Sub


Gruß Matthias

Anzeige
AW: Zeilen bedingt einblenden
24.05.2008 15:38:52
Maris
Hi Matthias!
ich glaube der Code ist genau das was ich suche, jedoch rechnet er jetzt schon seit 15 Min und hört nicht auf. Kann man das irgendwie stoppen? Habe leider noch nicht gespeichert...:-)
Gruß
MAris

AW: Zeilen bedingt einblenden
24.05.2008 16:01:00
Maris
Hi nochmal, hab den Code jetzt abgebrochen.... der macht schon genau das richtige soweit ich sehen konnte. Kann man den schneller machen mit screenupdate was verändern?

AW: Zeilen bedingt einblenden
24.05.2008 19:37:11
Josef
Hallo Maris,
probier mal.
Private Sub Worksheet_Calculate()
Dim lngRow As Long

On Error GoTo ErrExit

With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
    .EnableEvents = False
End With

If Range("J21") = "Vielen Dank!" Then
    For lngRow = 34 To 64
        Rows(lngRow).Hidden = (Cells(lngRow, 5).Value <> "x")
    Next
Else
    Rows("34:64").Hidden = True
End If

ErrExit:

With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
    .EnableEvents = True
End With

End Sub


Gruß Sepp



Anzeige
AW: Zeilen bedingt einblenden
24.05.2008 19:44:00
Maris
mei! Es hat funktioniert und auch noch super schnell! DAnke dir und an alle die mir geholfen haben!!!!!!

AW: Zeilen bedingt einblenden
24.05.2008 20:16:00
Matthias
Hallo Sepp
Bei mir funzt Deine Beispielcode nicht richtig. Liegt es an der Version ich hab xl2000.
Glaube ich aber eigentlich nicht, da mir die im Code verwendeten Befehle bekannt sind.
Hast Du eine Idee, woran es liegt?
Hier nochmal das Sheet mit Deinem Programmcode
https://www.herber.de/bbs/user/52601.xls
Gruß Matthias

x oder X macht den Unterschied! o.T.
24.05.2008 20:17:00
Josef

Gruß Sepp



Anzeige
Oh Oh, Hallo Sepp, ich bin ein Depp ;o)
24.05.2008 20:38:00
Matthias
Hi Sepp
Hätt ich auch selber drauf kommen müssen, grrrrr ....... ärger :(
In meinen Beispielen hatte ich überall UCase drin. Nix für ungut, Danke :o)
Gruß Matthias

AW: Zeilen bedingt einblenden
24.05.2008 16:00:18
Maris
Hi,
dein Code ist auch nicht schlecht! Allerdings werden mir die Zeilen nicht ausgeblendet, in denen kein X ist...
Gruß
MAris

Anzeige
dann hab ichs falsch verstanden.
24.05.2008 18:49:06
Matthias
Hi
Du hättest doch nur die Operatoren tauschen brauchen !
If Target.Value = "Vielen Dank" Then ...
If UCase(Cells(LNG, 5).Value) "X" Then ...
Gruß Matthias

AW: dann hab ichs falsch verstanden.
24.05.2008 19:27:31
Maris
Hi Matthias!
mit dieser Codeänderung macht er irgendwie garnichts mehr... Der Code von deinem Namensfetter in diesem Posting klappt super dauert aber mit der Ausführung mehr als 20 Min, kann man den vielleicht mit screenupdate ändern und damit die Laufzeit verkürzen?

nimm mal dieses Sheet, klappt's ?
24.05.2008 19:43:00
Matthias
Hallo
Den Programmcode von meinem Namensvetter habe ich mir noch nicht angeschaut.
Also 20 min um 32 Zeilen auf ein "X" zu prüfen und den Rest auszublenden, scheint mir auch sehr mysteriös(lang)
Probier mal die neue Datei, ob das Ergebnis so gewünscht ist oder ob ich wieder was falsch verstanden habe.
https://www.herber.de/bbs/user/52600.xls
Gruß matthias

Anzeige
AW: nimm mal dieses Sheet, klappt's ?
24.05.2008 22:28:00
Matthias
Hallo Namensvetter,
der Code dauert ab Excel 2003 so lange, weil die Zellen durch Ein- oder Ausblenden einer Zeile alle neu berechnet werden. Bei entsprechend komplexen Formeln dauert das dann so lange. Deshalb hat ab Excel 2003 auch das Calculation=xlCalculationManual einen Effekt, bis Excel Version 10 (Excel XP) ist das nämlich egal.
Details:
http://support.microsoft.com/?scid=kb%3Ben-us%3B918621&x=6&y=7
Gruß Matthias G

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige