[Excel] Zeilen mit Makro ausblenden

>|Sh4d0w|<

Commander
Registriert
Jan. 2009
Beiträge
2.515
[Excel] Einige Fragen zu Formeln etc.

Hallo zusammen,
da ich in Excel an einer Tabelle Monat für Monat arbeite und desöfteren nicht weiß wie ich welches Problem löse möchte ich nicht ständig Threads erstellen, sondern alle Fragen in einen Threa packen.

Ich möchte für eine Excel Tabelle ein Makro erstellen, das bestimmte Zellen automatisch ausblendet. Mit Google lässt sich zwar einiges finden, nur leider nicht das richtige.

Die kompletten waagrechten Zellen sollen ausgebldent werden, wenn ein Kriterium erfüllt ist. Das kriterium lautet: WENN(AG..<>""; nichts; ansonsten soll das Makro aktiv werden und die Zelle(n) ausblenden). Das war jetzt natürlich sehr vereinfacht.

Es gibt bei meiner Tabelle im Moment 285 (ausblendbare) Zellen und dieser Bereich wird bei der Einfügung neuer Zellen ständig nach unten erweitert.

Vielleicht kann mir ja jemand weiterhelfen :)
 
Zuletzt bearbeitet: (Einen Thread anstatt mehrere)
Hallo,

ich habe zur Zeit keine Möglichkeit zu testen, sollte aber so gehen.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = [COLOR="Red"]xx[/COLOR] Then   [B][I] 'statt[COLOR="Red"]"xx"[/COLOR] die Spaltenummer angeben, in welcher die Bedingung steht: A=1; B=2......usw[/I][/B]
   If Cells(Target.Row, [COLOR="Red"]xx[/COLOR]) <> "" Then 
   Rows(Target.Row).EntireRow.Hidden = True
  End If
End If
End Sub

- am einfachsten ist, den Code in das entsprechende Blatt kopieren

--> rechte Maustaste auf Tabellenreiter -->Code anzeigen -->Einfügen
 
Vielen Dank ecki, werd ich heute Abend gleich testen. Erkennt das Makro auch wenn ich innerhalb des angegebenen Zellbereiches neue Zellen einfüge, sodass ei Zellen um +1 umgeschrieben werden? Ich weiß dass das im Tabellenblatt immer geht, aber wie siehz es im Makro aus?

EDIT: Hm, will "noch" nicht so ganz bei mir klappen. Habe den Makroquelltext unter das 1. makro kopiert. Ich muss doch nur den Namen ändern und die Zahl in "xx" eintragen. Für AG wäre das ja 33, es will nicht so ganz klappen^^
 
Zuletzt bearbeitet:
Hm,

ich hätte das, mit meinen bescheidenen VBA-Kenntnissen, so gemacht :)
Code:
Sub Zeileausblenden()

Dim i As Integer

For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
  With Range("AG" & i)
    If .Value = "" Then
      .EntireRow.Hidden = True
    End If
  End With
Next i

End Sub
 
Zuletzt bearbeitet:
danke mr. snoot.

EDIT: Es funktioniert bei mir leider immernoch nicht so ganz. muss ich das Makro vielleicht noch ein bisschen modifizieren weil ich ja schon ein Makro im selben Tabellenblatt habe.

Das 1. Makro fängt mit Private Sub an, das 2te von Mr. Snoot mit Sub
 
Zuletzt bearbeitet:
Was funktioniert denn nicht so ganz?

Füge das Makro mal in ein Modul ein (im VBA-Editor Einfügen | Modul) und ersetze ActiveSheet mit Worksheets("dein Blattname").
 
das funktioneirt bei mir immer noch nicht :freak:. iwas muss ich da falsch machen.

Habe ein 2tes Modul hinzugefügt, danach den Code 1:1 reinkopiert und ActiveSheet mit Worksheets("mein Tabellenblatt) geändert.
 
habe glaube ich den Fehler gefunden. Ich habe ja in alle Zellen der Spalte AG eine Formel drinnen stehen. Die Zellen sind also mit einer Formel gefüllt, allerdings wird der Ausgabewert (für mich sichtbar) nur sichtbar wenn ein bestimmtes Kriterium erfüllt ist (Zellen in AG sind Hilfszellen für weitere Formeln und Zellbereiche).

Für das Makro ist die Zelle also gefüllt und wird nicht ausgeblendet.

Richtig?


PS: die Datei die angehängte Exceldatei funktioniert einwandfrei.
 
Also steht bei dir in der Zelle nicht einfach gar nichts sondern eine Wenn-Funktion, die eben als Dann- oder Sonst-Wert "" liefert?

Dann sollte es aber eigentlich auch funktionieren, oder steht bei dir dann etwas Bestimmtes in der Zelle?


Am leichtesten ist es, wenn du mal eine Beispieltabelle anhängst, dann spart man sich das Rätselraten :)
 
Kann es sein dass mir in meiner Tabelle die Buttons fehlen, damit ich das Makro aktivieren kann? Du hattest in der Testtabelle ja auch zwei Buttons für Ein- und ausblenden....

EDIT: wenn es das mit den Buttons nicht ist gebe ich dir mal meine tabelle
 
Zuletzt bearbeitet:
Naja, ist halt einfacher das Makro so zu starten :D

Weiß ja nicht, wie du das sonst handhabst. Unbedingt brauchen tut man sie nicht, aber von alleine startet das Makro auch nicht :)
 
Ach du heilige Maria..Wieso funktioniert das aufeinmal :cool_alt::cool_alt:. Ok es lag wirklich nur an den vergessenen Buttons. Jetzt fiel mir aber ein fehler meinerseit auf. Da ja Zelle AG für ein weiteres Makro verwendet wird um unten automatisch ein Anzeigebereich zu erstellen.

Da aber nur das von dir erstellte Makro funktionert muss ja die Zellen(n) logischerweise leer sein.
Jetzt komme ich zum Problem dass mir das Makro weitere zellen ausblendet, die ich aber offen haben möchte.

Kann man das Makro noch verfeinern in dem man als 2te Bedingung angibt dass in Spalte A noch die jeweilige Zelle einen Wert drinnen stehen haben muss.
 
Ja, kann man alles.

Man könnte ggf. auch das jetzige Makro so anpassen, dass nur das ausgeblendet wird, was ausgeblendet werden soll, aber wenn man keine Datei vor sich hat, kann man nur blind rumprogrammieren :p
Code:
Sub Zeileausblenden()

Dim i As Integer

For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
  If Range("AG" & i).Value = "" AND Range("[COLOR="red"]A[/COLOR]" & i).Value = "[COLOR="Red"]weiteres Kriterium in Spalte A[/COLOR]" Then
    Range("AG" & i).EntireRow.Hidden = True
  End If
Next i

End Sub
Da kannst du als weiteres Kriterium irgendeinen Text oder was du willst angeben. Wenns ein Zahlenwert ist, muss dieser nicht in "" stehen.
 
Soweit so gut funktioniert alles. Nur habe ich jetzt andere Zellbereiche nicht beachtet. Zum einen sucht das Makro dann ja von komplett oben bis ziemlich weit unten ab. Zum anderen wird auch der Anzeigebereich ausgeblendet, den ich ganz vergessen habe.

Das einfachste wäre wenn ich dir mal meine Tabelle schicke (am besten per email). Dann könntest du das mal ändern dass die Makros (Zelle aus- & einblenden) nur einen bestimmten Zellbereich durchforsten sollen und auch nur dort anwewendet werden sollen. Außerdem bringt das Geschwindigkeitsvorteile, da ja nicht das komplette Tabellenblatt von oben bis unten durchsucht werden muss.

Melde dich doch mal per pn
 
Hallo !

Ich experimentiere auch gerade mit diesem Code in Excel rum:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 7 Then
    If Cells(Target.Row, 7) = "aaa" Then
        Rows(Target.Row).EntireRow.Hidden = True
    End If
End If
End Sub

Und es funktioniert soweit auch. Ich habe nur das Problem das es nur funktioniert wenn ich "aaa" manuell eintippe und Enter drücke. Wenn der Wert mit einer WennDann Formel kommt dann reagiert Excel nicht darauf. Wie kann ich das ändern das die Zeile auch ausgeblendet wird wenn "aaa" von einer WennDann Formel kommt ?
 
Habe es geschafft:

Private Sub Worksheet_Calculate()
Dim e As Range
For Each e In Range("B3, B7, B10").Cells
If e.Value = "aaa" Then
e.EntireRow.Hidden = True
Else
e.EntireRow.Hidden = False
End If
Next
End sub

so wird Feld B3, B7 und B10 ausgeblendet wenn "aaa" drinsteht und der Wert aus einer WennDann Formel kommt !
 
Soo, und mal wieder hab ich ein Problemchen in meiner Excel Datei.

Folgendes:
Ich habe eine Tabelle erstellt, in der ich Bestellungen-genauer gesagt alle bestellten Teile reinschreibe. Das jetzige ist ja kein Problem nur die Teile sollen in anderen Tabellen aufgezählt-also nach Datum, Stückzahl und € aufgezählt werden. Das ist das einzige Problem.

Ich mach zwar viel mit Excel, allerdings weiß ich bei dem Problem überhaupt nichts, denn es die ganzen Sachen sollen ja in der Tabelle nicht durcheinander geraten kommen.

Anbei habe ich mal zwei Bilder gehängt.


bild1nbe.png


bild2t.png
 
Zurück
Oben