Office: VBA Code für Zeilen ausblenden einblenden mit JA/Nein

Helfe beim Thema VBA Code für Zeilen ausblenden einblenden mit JA/Nein in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, habe eine Exceltabelle, bei der ich bei einer Zelle eine Ja/Nein abfrage mache, wenn in der Zelle Nein steht, dann soll ein bestimmter... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Sait55, 27. Oktober 2024.

  1. Sait55 User

    VBA Code für Zeilen ausblenden einblenden mit JA/Nein


    Hallo,
    habe eine Exceltabelle, bei der ich bei einer Zelle eine Ja/Nein abfrage mache, wenn in der Zelle Nein steht, dann soll ein bestimmter Zeilenbereich, den ich definieren möchte, ausgeblendet werden, wenn dann Ja steht, dann sollen die wieder eingeblendet werde.
    Das habe ich über VBA mit der Change Befehl auch hingekriegt.
    Jetzt ist mein Problem, das ich es nicht für die nachfolgenden Zellbereiche hin bekomme.
    Dazu habe ich eine Exceltabelle als Test mal angehängt.
    In der Tabelle gibt ein Regal D25 von A11 bis A19, bei Zelle B11 wird ein JA oder Nein ausgewählt, welches dann die Zellen 22 bis 31 ein oder ausblendet, das funktioniert auch,
    Jetzt möchte ich auch dieses für D26 mache, wo die Zeilen 43 bis 50 aus- oder eingeblendet werden sollen, dieses schaffe ich nicht in den VBA Code zu implentieren.
    Geht das überhaupt auch ?

    Code welches mit D25 funktioniert
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("C11").Value = "NEIN" Then
    Rows("22:31").Hidden = True
    Exit Sub
    Else
    Rows("22:31").Hidden = False
    End If

    End Sub



    Ich hoffe ich konnte mein Problem erläutern.
    Gruß
    Sait55
     
    Zuletzt bearbeitet: 27. Oktober 2024
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    Hallo
    es reicht eine Zeile und man sollte die VBA Zeie auch komplett schreiben. Den Fehler hättest Du erkannt, wenn Du den Makrorecorder benutz hättest.
    Man sollte immer Option Explicit benutze, damit schreibfehler bei Variablen auffallen.

    Code:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        Rows("22:31").EntireRow.Hidden = UCase(Range("C11").Value) = "NEIN"
    End Sub
    

    In Deiner Datei konnte ich es nicht testen, da MS sie als unsicherer eingestuft hat.

    VBA Code für Zeilen ausblenden einblenden mit JA/Nein GrußformelVBA Code für Zeilen ausblenden einblenden mit JA/Nein Homepage
     
    Hajo_Zi, 27. Oktober 2024
    #2
  3. Sait55 User
    Hallo,
    danke für die Antwort, aber wie soll ich es denn jetzt weiter machen für die nachfolgenden Zeilen ?
    oder soll ich es immer wieder kopieren und dann die entsprechenden Zellen und Zeilen ändern ?

    Gruß
    Sait
     
  4. Klaus-Dieter Erfahrener User

    VBA Code für Zeilen ausblenden einblenden mit JA/Nein

    Hallo Sait,

    mal abgesehen vom Aufbau deiner Datei, den ich aus EDV-Sicht für sehr schlecht halte, mal die Frage, wie stellst du dir es vor, wie die Zeilen wieder eingeblendet werden sollen, wenn die Zelle auf nein steht? Oder soll jeweils immer nur ein Bereich ausgeblendet werden?
     
    Klaus-Dieter, 28. Oktober 2024
    #4
  5. Hajo_Zi
    Hajo_Zi Erfahrener User
    ich habe nur umgesetzt was im Code Stand. In Deinen Kopf schaue ich nicht um zu sehen was Du noch machen möchtest.

    Gruß Hajo
     
    Hajo_Zi, 28. Oktober 2024
    #5
  6. OilMax Erfahrener User
    Hallo,
    das funktioniert so:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        Application.EnableEvents = False
        If Not Intersect(Target, Range("C11")) Is Nothing Then
            If Target = "JA" Then
                Rows("22:31").Hidden = False
            Else
                Rows("22:31").Hidden = True
            End If
        End If
         If Not Intersect(Target, Range("C32")) Is Nothing Then
            If Target = "JA" Then
                Rows("43:50").Hidden = False
            Else
                Rows("43:50").Hidden = True
            End If
        End If
        Application.EnableEvents = True
    End Sub
    Sollte es zu einer ganzen Reihe solcher Vorgänge kommen braucht es eine Vorgabe aller auszuwertenden Zelladressen und Zielzeilen in ein Array um alles in einer Schleife abzuarbeiten. Da bleibt die Prozedur klein und leserlich.

    Gruß Uwe
     
    Zuletzt bearbeitet: 28. Oktober 2024
    1 Person gefällt das.
  7. Sait55 User
    Hallo,
    danke für deine Bemühungen, aber in meinem Kopf solltest du auch nicht hinein schauen, wie Ihr sicherlich mitbekommen habt, habe ich ich nicht so viel Ahnung, deshalb wende ich mich an diesen Forum, wenn einer kein Lust hat oder auch das nicht versteht, was der Themenersteller möchte, dann braucht man ja auch nicht darauf antworten oder reagieren, ich verstehe solche Aussagen nicht.

    Entweder man kann eine Hilfe leisten oder nicht, ich habe auch in dem Anfangsbeitrag gefragt, Ist das überhaupt möglich ?
    Ich verstehe nicht warum die Datei, die ich als Test erstellt habe nicht funktioniert.

    Gruß
    Sait
     
    1 Person gefällt das.
  8. Sait55 User

    VBA Code für Zeilen ausblenden einblenden mit JA/Nein

    @Uwe,
    danke für die Antwort, ja es sind einigen Zellen und die dazu gehörigen Zellen Betroffen,
    wie sieht denn so eine Schleife für etwas 20 solcher Blöcke denn aus.
     
  9. Sait55 User
    Hallo,
    also ich habe es so wie Uwe es geschrieben hat, gemacht und es funktioniert super, damit ist die Sache für mich gelöst.
    Danke für die mitwirkenden.
    Gruß
     
  10. OilMax Erfahrener User
    Hallo,

    Unter der Vorraussetzung, dass die Blöcke im 11 Abstand angelegt sind wäre dies so:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
            Dim i&, j&, arr(1 To 20, 1 To 2) 'ggf 1. Dimension (1 to 20) den tatsächlichen Verhältnissen anpassen
        For i = 1 To UBound(arr)    ' Erzeugung des Arrays unter Voraussetzung, dass alle Blöcke im 11' er Abstand angelegt sind
            arr(i, 1) = "C" & 11 + j
            arr(i, 2) = 22 + j & ":" & 31 + j
            j = j + 21
        Next i
        Application.EnableEvents = False
        For i = 1 To UBound(arr)
            If Not Intersect(Target, Range(arr(i, 1))) Is Nothing Then
                If Target = "JA" Then
                    Rows(arr(i, 2)).Hidden = False
                Else
                    Rows(arr(i, 2)).Hidden = True
                End If
            End If
        Next i
        Application.EnableEvents = True
    End Sub
    Gruß Uwe
     
  11. HKindler
    HKindler Erfahrener User
    Hi Uwe,

    bei deiner Art dies zu programmieren, bekommt deine Routine Probleme, sobald mehrere Zellen gleichzeitig geändert werden. Denn dann enthält Target mehrere Zellen und der Ausdruck Target = "JA" führt zu einem Fehler. Außerdem ist das Abschalten der Events hier überflüssig, denn es wird ja nichts ins Tabellenblatt geschrieben. Da das Abschalten aber potentiell gefährlich ist, sollte man dies hier besser unterlassen.

    Ich würde die Routine so schreiben:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Bereich As Range
    Dim Zelle As Range
    Set Bereich = Intersect(Target, Range("C11,C32,C53"))
    If Not Bereich Is Nothing Then
        For Each Zelle In Bereich
            Zelle.Offset(11).Resize(10).EntireRow.Hidden = Not UCase(Zelle) = "JA"
        Next Zelle
    End If
    End Sub
     
    HKindler, 31. Oktober 2024
    #11
Thema:

VBA Code für Zeilen ausblenden einblenden mit JA/Nein

Die Seite wird geladen...
  1. VBA Code für Zeilen ausblenden einblenden mit JA/Nein - Similar Threads - VBA Code Zeilen

  2. VBA Code gesucht für Zeilen löschen anhand von Kriterien

    in Microsoft Excel Hilfe
    VBA Code gesucht für Zeilen löschen anhand von Kriterien: Guten Tag Ich habe eine Exceldatei mit mehreren Tabellen. Auf einer Tabelle habe ich eine ziemlich grosse Liste von Einträgen, die mit einem bestimmten Schlüssel versehen sind (pro Tag mehrere...
  3. VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen

    in Microsoft Excel Hilfe
    VBA - Zeilen je nach Bedingung in neues Tabellenblatt verschieben und löschen: Hallo liebe Excel-Kommunity, nach ewigen Stunden des Suchens und Rumprobierens bin ich an dem Punkt angekommen an dem ich verzweifelt um eure Hilfe fragen muss. Da ich leider keinerlei...
  4. VBA Code - aktive Zeile markieren und kopieren

    in Microsoft Excel Hilfe
    VBA Code - aktive Zeile markieren und kopieren: Hallo zusammen Ich möchte die aktive Zeile mit den Spalten A:AA im Tabellenblatt 1 mit einem VBA Code automatisch ins Tabellenblatt 2, Zeile 1 kopieren. Habe schon einige Codes versucht, und...
  5. Jeweils unterschiedliche Anzahl von Zeilen abwechselnd anders einfärben

    in Microsoft Excel Hilfe
    Jeweils unterschiedliche Anzahl von Zeilen abwechselnd anders einfärben: Hallo und guten Tag, ich habe eine Excel-Tabelle, in der eine jeweils unterschiedliche Anzahl von Zeilen abwechselnd anders eingefärbt werden soll. Hier ein Screenshot, wie es am Ende...
  6. Code funktioniert nicht in erster Zeile eines Kombinationsfeldes

    in Microsoft Access Hilfe
    Code funktioniert nicht in erster Zeile eines Kombinationsfeldes: Hallo Community, ich habe ein vermutlich nur ganz kleines Problem: Folgender Code bezieht sich auf ein Kombinationsfeld mit dem Namen "Art". Er führt dazu, dass je nach Auswahl, die über das...
  7. Spalten in Zeilen umwandeln wenn A1 gleich A2

    in Microsoft Excel Hilfe
    Spalten in Zeilen umwandeln wenn A1 gleich A2: Hallo zusammen Ich brauche dringend Hilfe! Ich muss eine 57765 Zeilen lange Liste formatieren. Es geht um Infos zu Produkten, die ca. so aussehen: <tbody> A B C 1 201100435 Beispieltext 1...
  8. VBA - Code Zeile einfügen soll erst ab bestimmter Zeile beginnen

    in Microsoft Excel Hilfe
    VBA - Code Zeile einfügen soll erst ab bestimmter Zeile beginnen: Hallo ihr Lieben, ich habe vor kurzem eine Excel-Tabelle erstellt, in der ich über ein Makro eine neue Zeile hinzufügen kann, in der alle Formeln und Formate übernommen werden. Das sieht so...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden