Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen ausblenden wenn Bedingung erfüllt

Zeilen ausblenden wenn Bedingung erfüllt
21.04.2023 16:29:47
GGG2019

Hallo zusammen,

ich habe wieder eine Aufgabe, die ich alleine mit meinen spärlichen VBA-Kenntnissen leider nicht lösen kann.
Die Tabelle soll, je nach dem, welcher Typ in Zelle A1 gewählt wird die Zeilen ausblenden, welche in den Spalten C-G in den zugeodneten Zeilen KEIN x haben.
Beispiel: Wird in A1 Typ A gewählt, so sollen die Zeilen 4, 6 und 7 ausgeblendet werden, wird in Zelle A1 Typ D gewählt, so sollen die Zeilen 3 und 4 ausgeblendet werden. Das Ganze soll automatisch erfolgen, sobald in Zelle A1 eine Änderung erfolgt. Bei "bitte wählen" sind alle Zeilen eingeblendet.
Die Länge der Tabelle (ab Zeile 3) muss variabel bleiben.Allerdings werden unterhalb der Tabelle in Spalte C-G keine weiteren Daten eingefügt. Diese Spalten sollen später ausgeblendet werden. Diese fünf Spalten sind also "nach unten offen".

Ich bin so weit, dass ich fixe Zeilen ausblenden kann (wobei selbst Typ A nicht korrekt funktioniert). Aber wie kann ich nun die Zeilen gemäß Matrix der Spalten C-G ausblenden?

Wäre toll, wenn mir jemand helfen könnte. Vorab schon mal tausend Dank.

https://www.herber.de/bbs/user/158827.xlsx

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen ausblenden wenn Bedingung erfüllt
21.04.2023 18:22:24
GerdL
Hallo

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "A1" Then Call Unit
End Sub


Sub Unit()

    Dim EZ As Long, LZ As Long, spalte As Long
    
    
    EZ = 3
    LZ = Cells(Rows.Count, "J").End(xlUp).Offset(-1, 0).Row
    If Range("A1") = "bitte wählen" Then
        spalte = 1
    Else
        spalte = Application.Match(Range("A1").Value, Range("C1:G1"), 0) + 2
    End If
    
    With Range(Cells(EZ, spalte), Cells(LZ, spalte))
        .EntireRow.Hidden = False
        If spalte > 1 Then
        If WorksheetFunction.CountBlank(.Cells) > 0 Then
            .Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
        End If
        End If
    End With


End Sub
Gruß GL


Anzeige
AW: Zeilen ausblenden wenn Bedingung erfüllt
24.04.2023 14:04:57
GGG2019
Toll. Das hätte ich alleine nicht hinbekommen. Ich werde mich gleich mal an die Umsetzung in der Original-Datei machen. Tausend Dank!


AW: Zeilen ausblenden wenn Bedingung erfüllt
26.04.2023 12:11:59
GGG2019
Hallo Gerd,
nochmals vielen Dank für Deine Mühe. Leider komme ich mit dem Programm nicht weiter. Es funktioniert einwandfrei in der kleinen Beispieldatei. Jedoch bin ich nicht in der Lage, es auf meine Original-Datai umzusetzen. Meine Original-Datei sieht wie folgt aus:

A1 aus der Beispieldatei = B2 (Zelle, die in der sich der Typ über Scrollmenü ändert)
Werte C1-G1 aus der Beispieldatei = Werte D11-Z11
erste Zeile mit Kreuzchen in Beispieldatei Zeile 3 = Zeile 15 in der Originaldatei

Es sollte eigentlich möglich sein, das umzusetzen. Leider funktioniert es bei mir nicht. Es werden bei einem Match B2/D11 ALLE Zeilen ausgeblendet. Und bei einem Match B2/E11 wird eine Zeile, welche ein Kreuz hat ausgeblendet, dafür eine andere, welche kein Kreuz hat, eingeblendet. Das ist mir ein Rätsel. Wäre toll, wenn Du mir nochmals helfen könntest. Vielen Dank vorab!!!


Anzeige
AW: Zeilen ausblenden wenn Bedingung erfüllt
26.04.2023 13:48:39
GerdL
So vielleicht.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "B2" Then Call Unit
End Sub


Sub Unit()

    Dim EZ As Long, LZ As Long, spalte As Long
    
    
    EZ = 15
    LZ = Cells(Rows.Count, "Z").End(xlUp).Offset(-1, 0).Row 'Messspalte für letzte Zeile ist die Spalte Z
    
    
    
    If Range("B2") = "bitte wählen" Then
        spalte = 1    'Die durchgängig vorhandenen Datümer stehen in Spalte A = 1
    Else
        spalte = Application.Match(Range("B2").Value, Range("D11:Z11"), 0) + 3 'bei Treffer in D11 = 1 + 3 = 4 für Spalte D
    End If
    
    With Range(Cells(EZ, spalte), Cells(LZ, spalte))
        .EntireRow.Hidden = False
        If spalte > 1 Then 'Die durchgängig vorhandenen Datümer stehen in Spalte A = 1
        If WorksheetFunction.CountBlank(.Cells) > 0 Then
            .Cells.SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
        End If
        End If
    End With


End Sub

Gruß Gerd

Anzeige

422 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige