Discussion:
Zeilen ausblenden, die mehrere Kriterien erfüllen
(zu alt für eine Antwort)
Detlev Laue
2006-08-02 12:44:02 UTC
Permalink
Hallo,
ich möchte in einer Exceltabelle Zeilen ausblenden, die mehrere Kriterien
erfüllen. Im unten aufgeführten Makro kann ich nur ein Kriterium abfragen.
Hier z.B. steht in Zelle AS06 bis AS107 etwas oder nicht. Ich möchte aber
noch einen anderen Zellbereich abfragen (z.B. B6 bis B107). Mache ich jetzt
noch eine Schleife werden alle bis hierher ausgeblendeten Zeilen wieder
eingeblendet.
Ich bin für jede Hilfe dankbar.

Danke Detlev.
Sub nur_entlassene_einblenden()
Dim b As Range
For Each b In Range("AS6:AS107")
If b.Value <> " " Then
b.EntireRow.Hidden = False
Else
b.EntireRow.Hidden = True
End If
Next
End Sub

PS. Hier noch eine Frage an alle MVP. Gibt es im Internet irgendwo
Fernlehrgänge Webseminare o.ä., wo ich Excel, VBA, bzw. Makroprogrammierung
ausführlich lernen kann? Ich war auf der VHS. die Angebote dort sind aber nur
für Einsteiger.
Thomas Ramel
2006-08-02 14:22:54 UTC
Permalink
Grüezi Detlev

Detlev Laue schrieb am 02.08.2006
Post by Detlev Laue
ich möchte in einer Exceltabelle Zeilen ausblenden, die mehrere Kriterien
erfüllen. Im unten aufgeführten Makro kann ich nur ein Kriterium abfragen.
Hier z.B. steht in Zelle AS06 bis AS107 etwas oder nicht. Ich möchte aber
noch einen anderen Zellbereich abfragen (z.B. B6 bis B107).
Du könntest mit dem Autofilter ganz ohne VBA arbeiten - so kannst Du für
jede Spalte ein Kriterium festlegen, wobei die bereits gesetzten in den
anderen Spalten erhalten bleiben.
Post by Detlev Laue
Sub nur_entlassene_einblenden()
Dim b As Range
For Each b In Range("AS6:AS107")
Du könntest, wenn Du bei VBA bleiben willst/musst, auch abhängig von der
gerade untersuchten Zelle eine weitere Prüfung einbauen.
Post by Detlev Laue
If b.Value <> " " Then
If b.Value <> " " And Range("B"& b.Row) <> " " Then
Post by Detlev Laue
b.EntireRow.Hidden = False
Else
b.EntireRow.Hidden = True
End If
Next
End Sub
PS. Hier noch eine Frage an alle MVP. Gibt es im Internet irgendwo
Fernlehrgänge Webseminare o.ä., wo ich Excel, VBA, bzw. Makroprogrammierung
ausführlich lernen kann? Ich war auf der VHS. die Angebote dort sind aber nur
für Einsteiger.
Das wird wohl auch so bleiben, denke ich mal.
Eine gute Anlaufstelle sind IMO die MSDN-Developer Center:

http://msdn.microsoft.com/developercenters/
https://www.netscum.dk/germany/msdn/developercenter/default.mspx


Am meisten und nähesten bei der Praxis bist Du aber wohl hier in der NG.
Lies mit und versuche die Probleme selbst nachzustellen und die geposteten
Codes zu ergründen. So findest Du dich am schnellsten zurecht.




Mit freundlichen Grüssen
Thomas Ramel (@work)
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2003 SP-1]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
claus_busch@nospam.de
2006-08-02 15:48:50 UTC
Permalink
Hallo Thomas,

weißt du, warum in den letzten Tagen einige Postings weder im
Web-Interface noch im News-Reader erscheinen? Zumeist sind Melanie oder
du davon betroffen. Um hier alles mitzubekommen. muss ich ab und an in
Google nachsehen.

Viele Grüße
Claus
Thomas Ramel
2006-08-02 18:40:50 UTC
Permalink
Grüezi claus
Post by ***@nospam.de
weißt du, warum in den letzten Tagen einige Postings weder im
Web-Interface noch im News-Reader erscheinen? Zumeist sind Melanie oder
du davon betroffen. Um hier alles mitzubekommen. muss ich ab und an in
Google nachsehen.
Ich poste nicht mehr direkt über den MS-Server sondern via Individuals.de
und soweit ich weiss ist es bei Melanie ähnlich.

Die MS-Serverfarm hat ab und an mal den Schluckauf - gerade wegen des
Phänomens, dass ich ab und zu mal nur Antworten, nicht aber die Fragen
gesehen habe, habe ich mich bewogen gefühlt den Server zu wechseln.

Der Abgleich der gespiegelten Server bei diversen Providern mit der
MS-Serverfarm hinkt IMO manchmal arg. Und wenn dann auf dem MS-Server das
Posting nicht synchronisiert wurde ist es halt nicht da - einige zeit
später taucht es vielleicht noch auf, doch ich denke in letzter zeit ist
einiges unter den Tisch gefallen.
Das Problem ist nicht neu;leider ist aber der zuständige Verantwortliche,
der die Sache über lange Zeit im Griff hatte nicht mehr bei Microsoft....



Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
Wolfgang Habernoll
2006-08-02 15:17:48 UTC
Permalink
Hallo Detlev
Post by Detlev Laue
Hallo,
ich möchte in einer Exceltabelle Zeilen ausblenden, die mehrere Kriterien
erfüllen. Im unten aufgeführten Makro kann ich nur ein Kriterium abfragen.
Hier z.B. steht in Zelle AS06 bis AS107 etwas oder nicht. Ich möchte aber
noch einen anderen Zellbereich abfragen (z.B. B6 bis B107). Mache ich jetzt
noch eine Schleife werden alle bis hierher ausgeblendeten Zeilen wieder
eingeblendet.
Ich bin für jede Hilfe dankbar.
Danke Detlev.
Sub nur_entlassene_einblenden()
Dim b As Range
For Each b In Range("AS6:AS107")
If b.Value <> " " Then
b.EntireRow.Hidden = False
Else
b.EntireRow.Hidden = True
End If
Next
End Sub
versuche es mal so, du solltest auch immer die richtige Tabelle ansprechen
sonst wird das ganze in der gerade aktiven ausgeführt.

Sub nur_entlassene_einblenden()
Dim rngBereich As Range

Dim rngI As Range
Set rngBereich = Worksheets("Tabelle1").Range("B6:B107,AS6:AS107")

For Each rngI In rngBereich
If rngI.Value <> " " Then
rngI.EntireRow.Hidden = False
Else
rngI.EntireRow.Hidden = True
End If
Next
End Sub
Post by Detlev Laue
PS. Hier noch eine Frage an alle MVP. Gibt es im Internet irgendwo
Fernlehrgänge Webseminare o.ä., wo ich Excel, VBA, bzw. Makroprogrammierung
ausführlich lernen kann? Ich war auf der VHS. die Angebote dort sind aber nur
für Einsteiger.
hier ein paar links ohne diese zu beurteilen

http://www.online-excel.de/
http://www.herber.de/
http://www.jumper.ch
http://www.schneider-schernsdorf.de/edv.htm#exc

mfG
Wolfgang Habernoll
Wolfgang Habernoll
2006-08-02 20:32:04 UTC
Permalink
Hallo Detlev
Post by Wolfgang Habernoll
Post by Detlev Laue
PS. Hier noch eine Frage an alle MVP. Gibt es im Internet irgendwo
Fernlehrgänge Webseminare o.ä., wo ich Excel, VBA, bzw. Makroprogrammierung
Sorry ich bin *kein* MPV , hab das überlesen und möchte das hiermit
klarstellen.

mfG
Wolfgang Habernoll
Post by Wolfgang Habernoll
hier ein paar links ohne diese zu beurteilen
http://www.online-excel.de/
http://www.herber.de/
http://www.jumper.ch
http://www.schneider-schernsdorf.de/edv.htm#exc
mfG
Wolfgang Habernoll
Thomas Ramel
2006-08-02 21:11:08 UTC
Permalink
Grüezi Wolfgang

Wolfgang Habernoll schrieb am 02.08.2006
Post by Wolfgang Habernoll
Hallo Detlev
Post by Detlev Laue
PS. Hier noch eine Frage an alle MVP. Gibt es im Internet irgendwo
Fernlehrgänge Webseminare o.ä., wo ich Excel, VBA, bzw. Makroprogrammierung
Sorry ich bin *kein* MPV , hab das überlesen und möchte das hiermit
klarstellen.
Fragen hier in der NG gehen grundsätzlich an alle - daher gibts nichts
klarzustellen oder zu berichtigen.
Jeder der mitliest und etwas zur Klärung/Lösung eines Problems beitragen
kann ist herzlich eingeladen, dies zu tun - das wär ja noch schöner....


Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
Detlev Laue
2006-08-03 06:12:01 UTC
Permalink
Post by Wolfgang Habernoll
versuche es mal so, du solltest auch immer die richtige Tabelle ansprechen
sonst wird das ganze in der gerade aktiven ausgeführt.
Sub nur_entlassene_einblenden()
Dim rngBereich As Range
Dim rngI As Range
Set rngBereich = Worksheets("Tabelle1").Range("B6:B107,AS6:AS107")
For Each rngI In rngBereich
If rngI.Value <> " " Then
rngI.EntireRow.Hidden = False
Else
rngI.EntireRow.Hidden = True
End If
Next
End Sub
Hallo Wolfgang,
danke erstmal für die Hilfe. Leider habe ich das Problem, das in den beiden
Spalten verschiedene Abfragen stattfinden sollen. Einmal Spalte B (steht dort
eine 0 oder was anderes) und Spalte AS (steht dort ein Datum oder ist Spalte
leer).
Die Antwort von Claus Busch kommt der Sache schon etwas näher. Leider habe
ich mit der Anpassung der Kriterien noch so meine Probleme. Aber ich denke
das wird schon.

mfg
Detlev Laue

PS. Wer mir solch guten und ausführlichen Antworten gibt ist für mich
trotzdem ein MVP. Dann halt mein persönlicher.
Claus Busch
2006-08-03 10:14:18 UTC
Permalink
Hallo Detlev,
Post by Detlev Laue
danke erstmal für die Hilfe. Leider habe ich das Problem, das in den beiden
Spalten verschiedene Abfragen stattfinden sollen. Einmal Spalte B (steht dort
eine 0 oder was anderes) und Spalte AS (steht dort ein Datum oder ist Spalte
leer).
Die Antwort von Claus Busch kommt der Sache schon etwas näher. Leider habe
ich mit der Anpassung der Kriterien noch so meine Probleme. Aber ich denke
das wird schon.
dann probiers mal so:
Sub nur_entlassene_einblenden()
Dim i As Long

'Hier Tabelle anpassen
With Worksheets("Tabelle1")

For i = 107 To 6 Step -1
If .Range("B" & i) <> "" And IsEmpty(.Range("AS" & i)) _
Or .Range("B" & i) <> "" And IsDate(.Range("AS" & i)) Then
Rows(i).Hidden = True
End If
Next

End With

End Sub
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Wolfgang Habernoll
2006-08-03 21:38:49 UTC
Permalink
Hallo Detlev
Post by Detlev Laue
Post by Wolfgang Habernoll
versuche es mal so, du solltest auch immer die richtige Tabelle ansprechen
sonst wird das ganze in der gerade aktiven ausgeführt.
Sub nur_entlassene_einblenden()
Dim rngBereich As Range
Dim rngI As Range
Set rngBereich = Worksheets("Tabelle1").Range("B6:B107,AS6:AS107")
For Each rngI In rngBereich
If rngI.Value <> " " Then
rngI.EntireRow.Hidden = False
Else
rngI.EntireRow.Hidden = True
End If
Next
End Sub
Hallo Wolfgang,
danke erstmal für die Hilfe. Leider habe ich das Problem, das in den beiden
Spalten verschiedene Abfragen stattfinden sollen. Einmal Spalte B (steht dort
eine 0 oder was anderes) und Spalte AS (steht dort ein Datum oder ist Spalte
leer).
Die Antwort von Claus Busch kommt der Sache schon etwas näher. Leider habe
ich mit der Anpassung der Kriterien noch so meine Probleme. Aber ich denke
das wird schon.
das denke ich auch, und danke für's Feedback


du hast Recht, ich wollte mit
Set rngBereich = Worksheets("Tabelle1").Range("B6:B107,AS6:AS107")
nur die zweite Schleife vermeiden und habe das mit den Bedingungen der zwei
Spalten nicht so richtig erkannt. Nun hast du ja eine Lösung von Claus, aber
ich möchte dir auch eine für dein "For Each " zeigen. Wir durchlaufen nur
Spalte B und vergleichen durch Offset mit Spalte AS.

Sub nur_entlassene_einblenden()
Dim rngBereich As Range
Dim rngI As Range
Set rngBereich = Worksheets("Tabelle1").Range("B6:B107")
For Each rngI In rngBereich

'' Hier *Deine* Bedingung des Vergleichs Spalte B (rngI)
'' und Spalte AS ( rngI.Offset(0, 43) ) festlegen
'' ist nur ein Bsp, trifft nicht dein Problem ---------
If rngI <> "" And rngI.Offset(0, 43) = Date Then

rngI.EntireRow.Hidden = False
Else
rngI.EntireRow.Hidden = True
End If
Next
End Sub

Ich erkenne aus deiner Frage nicht was du *genau* vergleichen möchtest, das
solltest du ggf. noch mal posten.
? = " " <willst du auf Leezeichen oder leere Zelle testen>
? steht dort ein Datum oder ist Spalte leer <nur Datum / leer oder auch
Datumsbereiche>


mfG
Wolfgang Habernoll
Post by Detlev Laue
mfg
Detlev Laue
PS. Wer mir solch guten und ausführlichen Antworten gibt ist für mich
trotzdem ein MVP. Dann halt mein persönlicher.
Detlev Laue
2006-08-04 05:27:02 UTC
Permalink
Post by Wolfgang Habernoll
Hallo Detlev
Post by Detlev Laue
Post by Wolfgang Habernoll
versuche es mal so, du solltest auch immer die richtige Tabelle ansprechen
sonst wird das ganze in der gerade aktiven ausgeführt.
Sub nur_entlassene_einblenden()
Dim rngBereich As Range
Dim rngI As Range
Set rngBereich = Worksheets("Tabelle1").Range("B6:B107,AS6:AS107")
For Each rngI In rngBereich
If rngI.Value <> " " Then
rngI.EntireRow.Hidden = False
Else
rngI.EntireRow.Hidden = True
End If
Next
End Sub
Hallo Wolfgang,
danke erstmal für die Hilfe. Leider habe ich das Problem, das in den beiden
Spalten verschiedene Abfragen stattfinden sollen. Einmal Spalte B (steht dort
eine 0 oder was anderes) und Spalte AS (steht dort ein Datum oder ist Spalte
leer).
Die Antwort von Claus Busch kommt der Sache schon etwas näher. Leider habe
ich mit der Anpassung der Kriterien noch so meine Probleme. Aber ich denke
das wird schon.
das denke ich auch, und danke für's Feedback
du hast Recht, ich wollte mit
Set rngBereich = Worksheets("Tabelle1").Range("B6:B107,AS6:AS107")
nur die zweite Schleife vermeiden und habe das mit den Bedingungen der zwei
Spalten nicht so richtig erkannt. Nun hast du ja eine Lösung von Claus, aber
ich möchte dir auch eine für dein "For Each " zeigen. Wir durchlaufen nur
Spalte B und vergleichen durch Offset mit Spalte AS.
Sub nur_entlassene_einblenden()
Dim rngBereich As Range
Dim rngI As Range
Set rngBereich = Worksheets("Tabelle1").Range("B6:B107")
For Each rngI In rngBereich
'' Hier *Deine* Bedingung des Vergleichs Spalte B (rngI)
'' und Spalte AS ( rngI.Offset(0, 43) ) festlegen
'' ist nur ein Bsp, trifft nicht dein Problem ---------
If rngI <> "" And rngI.Offset(0, 43) = Date Then
rngI.EntireRow.Hidden = False
Else
rngI.EntireRow.Hidden = True
End If
Next
End Sub
Ich erkenne aus deiner Frage nicht was du *genau* vergleichen möchtest, das
solltest du ggf. noch mal posten.
? = " " <willst du auf Leezeichen oder leere Zelle testen>
? steht dort ein Datum oder ist Spalte leer <nur Datum / leer oder auch
Datumsbereiche>
mfG
Wolfgang Habernoll
Hallo Wolfgang,
also in Spalte B steht eine 0 oder eine Zahl zwischen 300000 und 699999 und
in Spalte AS steht ein Datum oder nichts (leer).

mfg
Detlev Laue

Claus Busch
2006-08-02 15:39:18 UTC
Permalink
Hallo Detlev,
Post by Detlev Laue
ich möchte in einer Exceltabelle Zeilen ausblenden, die mehrere Kriterien
erfüllen. Im unten aufgeführten Makro kann ich nur ein Kriterium abfragen.
Hier z.B. steht in Zelle AS06 bis AS107 etwas oder nicht. Ich möchte aber
noch einen anderen Zellbereich abfragen (z.B. B6 bis B107). Mache ich jetzt
noch eine Schleife werden alle bis hierher ausgeblendeten Zeilen wieder
eingeblendet.
Ich bin für jede Hilfe dankbar.
Danke Detlev.
Sub nur_entlassene_einblenden()
Dim b As Range
For Each b In Range("AS6:AS107")
If b.Value <> " " Then
b.EntireRow.Hidden = False
Else
b.EntireRow.Hidden = True
End If
Next
End Sub
PS. Hier noch eine Frage an alle MVP. Gibt es im Internet irgendwo
Fernlehrgänge Webseminare o.ä., wo ich Excel, VBA, bzw. Makroprogrammierung
ausführlich lernen kann? Ich war auf der VHS. die Angebote dort sind aber nur
für Einsteiger.
probiers mal so:
Sub nur_entlassene_einblenden()
Dim i As Long

'Hier Tabelle anpassen
With Worksheets("Tabelle1")

For i = 107 To 6 Step -1
'Hier die Kriterien für B und AS anpassen
If .Range("B" & i).Value <> "" And _
.Range("AS" & i).Value <> "" Then
Rows(i).Hidden = True
End If
Next

End With

End Sub
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Loading...