Clever-Excel-Forum

Normale Version: Zeilen dynamisch ein und ausblenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallöchen liebe Excel-Gemeinde  :19:

ich habe mir eine kleine Projekt-Exceldatei gebaut, mit der man Aufwände berechnen und Kalenderwochen zuordnen kann.

Folgende Funktionen habe ich mit VBA schon umgesetzt.

1. Im Tabellenblatt "Übersicht" werden immer alle Tabellenblätter die es gibt aufgelistet, sodass man quasi alle Projekte in einer Übersicht hat.

2. Wenn man im jeweiligen Arbeitsblatt, also Projekt, den Status "Change abgenommen" eingibt, blendet sich mit dem nächsten Speichern das Tabellenblatt aus.

Das funktioniert für meine Ansprüche schon hervorragend. 

Nun möchte ich gerne noch folgendes umsetzen und wäre über den einen oder anderen VBA-Code sehr dankbar.  Angel


Wenn man wie bei 2. beschrieben den Status ändert und sich das Tabelleblatt ausblendet, so soll auch die Zeile mit der jeweiligen Projektnummer im Blatt "Übersicht" ausgeblendet werden. Ziel soll also sein, dass dort immer nur alle aktiven Projekte aufgelistet sind. 

Anbei meine bisheriges Werk.

Vielen Dank für eure Hilfe!  :43:
Hi,

Zitat:Anbei meine bisheriges Werk.

nicht ganz. Wink Du hast vermutlich vergessen, rechts den Button "Attachment hinzufügen" anzuklicken.
Ohhh... vielen Dank für den Hinweis. Nun aber ... Blush
hallöchen,

mal ohne in Deine Beispieldatei geschaut zu haben - erweitere Deinen Code um eine Schleife, wo Du die im Blatt Übersicht enthaltenen Blattnamen auf Sichtbarkeit prüfst. Im Prinzip so. Statt der Zahlen 1 bis 100 und der Spalte musst Du natürlich passende Werte programmieren. Falls das Ende der Schleife variabel sein soll , würde auch gehen ...

Code:
'Mit dem Blatt Uebersicht
with Sheets("Übersicht")
'Schleife ueber alle Blattnamen
for iCnt = 1 to 100
 'Zeile entsprechend Status des Blattes ein- oder ausblenden - Blattnamen in Spalte 1 (A)
.cells(icnt,1).entirerow.hidden=Sheets(cells(icnt,1).visible
'Ende Schleife ueber alle Blattnamen
next
'Ende Mit dem Blatt Uebersicht
end with

Anmerkung: Statt der Schleife könnte man auch mit ...find... arbeiten Smile
Hallo,

ersetze Deinen Code durch diesen:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   Dim i As Long
   Dim rngH As Range
   
   With ThisWorkbook.Worksheets("Übersicht").Range("A11").CurrentRegion
       .EntireRow.Hidden = False
       .Offset(1).Resize(.Rows.Count - 1, 1).ClearContents
       Set rngH = .Cells(1)
   End With
   
   For i = 6 To ThisWorkbook.Worksheets.Count
       With ThisWorkbook.Worksheets(i)
           rngH.Hyperlinks.Add _
               Anchor:=rngH.Offset(i - 5), _
               Address:="", _
               SubAddress:="'" & .Name & "'!A1", _
               TextToDisplay:=.Name
           If .Cells(3, 5) = "Change abgenommen" Then
               .Visible = 0
               rngH.Offset(i - 5).EntireRow.Hidden = True
           Else
               .Visible = -1
           End If
       End With
   Next i
End Sub

Gruß Uwe