Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen ausblenden

Zeilen ausblenden
24.04.2017 10:35:30
Wos
Hallo zusammen,
ich habe mich in letzter Zeit beruflich sehr viel mit Excel beschäftigt und versuche mich nun auch in VBA zurechtzufinden, um diverse Funktionen umsetzen zu können.
Aktuelles Ziel:
Ich möchte Zeilen (hier:14-33) ausblenden, wenn in einem bestimmten Feld (hier:N10) ein Wert auf 0 sinkt.
aktueller Code:
  • 
    Private Sub Worksheet_Change(ByVal Target As Range)
    If ActiveSheet.Range("N10").Value = 0 Then
    Rows("14:33").Select
    Selection.EntireRow.Hidden = True
    Else
    Rows("14:33").Select
    Selection.EntireRow.Hidden = False
    End If
    End Sub
    

  • aktuelle Probleme:
    - Zeilen werden ausgeblendet, auch wenn man einen anderen Wert als 0 eingibt
    - Zeilen werden nicht wieder eingeblendet
    - Änderungen in der Zielzelle über ein Formularsteuerelement werden nicht berücksichtigt
    Für Eure Hilfe wäre ich sehr dankbar

    13
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Zeilen ausblenden
    24.04.2017 10:42:01
    Matthias
    Hallo
    Private Sub Worksheet_Change(ByVal Target As Range)
    Rows("14:33").EntireRow.Hidden = Range("N10") = 0
    End Sub
    
    Gruß Matthias
    AW: Zeilen ausblenden
    24.04.2017 10:46:18
    Daniel
    Hi
    im Prinzip sollte dieser Code ausreichen:
    Range("14:33").EntireRow.Hidden = (Range("N10").Value = 0)
    
    beachte, dass man ausgeblendet Zellen nicht selektieren kann.
    wenn man mit diesen Zellen was machen will, muss man sie "direkt" ansprechen, ohne über die Selektion zu gehen (was sowieso der bessere Weg ist)
    wenn die Zelle N10 über ein Formularsteuerelement befüllt wird, solltest du diese Codezeile in ein normales Makro in einem allgemeinen Modul schreiben und dann dieses Marko dem Steuerelement über das Kontextmenü zuweisen. Das Makro wird dann bei einem Klick auf das Steuerelement ausgeführt.
    Gruß Daniel
    Anzeige
    AW: Zeilen ausblenden
    24.04.2017 11:02:27
    Wos
    Danke für die schnellen Antworten :)
    Euer Lösungsansatz sieht zwar viel besser aus als meiner, aber das Ergebnis ist leider bislang das Gleiche. An die Zuweisung direkt zum Steuerelement habe ich bisher noch gar nicht gedacht, werde ich dann ausprobieren.
    1. Dass Zeilen auch ausgeblendet werden, wenn ein Wert von größer 0 eingetragen wird, versteh ich nicht. Dürfte bei allen unseren Lösungen nicht der Falls sein, oder?
    2. Impliziert Eure Formel auch, dass die Zellen wieder eingeblendet werden, wennd er Wert auf größer 0 geändert wird?
    AW: Zeilen ausblenden
    24.04.2017 11:20:53
    Matthias
    Hallo
    Zu 1. Nein
    Zu 2. Ja
    zu 1. Wenn ein Wert 0 eingetragen wird, werden die Zeilen eingeblendet
    zu 2.
    Impliziert Eure Formel auch, dass die Zellen wieder eingeblendet werden, wennd er Wert auf größer 0 geändert wird?
    Nein, sondern Ungleich 0 [0]
    Gruß Matthias
    Anzeige
    AW: Zeilen ausblenden
    24.04.2017 14:06:30
    Wos
    Okay, das mit ungleich ist kein Problem, da ohnehin nur positive Werte zugelassen sind. Danke
    AW: Zeilen ausblenden
    24.04.2017 11:23:17
    Daniel
    Hi
    diese Codezeile blendet aus, wenn in N10 die 0 steht oder die Zelle leer ist
    Sie blendet ein, wenn in N10 ein anderer Wert (alles ausser 0)
    die Codezeile macht beides. Zum Einblenden brauchst du den Wert FALSE, zum Einblenden den Wert TRUE.
    beides wird, in Abhängigkeit vom Wert in der Zelle N10 über den Vergleich Range("N10").Value = 0, erzeugt, so dass kein IF-Then erforderlich ist und eine Programmzeile ausreicht.
    Wenns für dich übersichtlicher ist, kannst du auch programmieren:
    IF Range("N10").Value = 0 then
    Range("14:33").EntireRow.Hidden = True
    Else
    Range("14:33").EntireRow.Hidden = False
    end with
    
    Gruß Daniel
    Anzeige
    AW: Zeilen ausblenden
    24.04.2017 11:38:16
    Werner
    Hallo,
    kann ich nicht nachvollziehen. Habe den Code jetzt noch erweitert auf eine Abfrage, ob in N10 eine Zahl steht.
    N10 kleiner oder gleich 0: Zeilen ausblenden
    N10 größer 0: Zeilen einblenden
    N10 leer: Zeilen einblenden
    N10 keine Zahl: einblenden
    https://www.herber.de/bbs/user/113070.xlsm
    Gruß Werner
    Change oder Calculate ?
    24.04.2017 11:33:37
    EtoPHG
    Hallo,
    Zitat: Ich möchte Zeilen (hier:14-33) ausblenden, wenn in einem bestimmten Feld (hier:N10) ein Wert auf 0 sinkt.
    Wird der Wert in N10 durch eine Formel berechnet?
    Wenn ja, nützen dir die vorgeschlagenen _Change(... Codes nicht, den eine _Change Ereignis tritt nur bei 'manueller' Änderung eines Zellwerts ein.
    Gruess Hansueli
    Anzeige
    AW: Change oder Calculate ?
    24.04.2017 11:38:43
    Matthias
    Hallo Hansueli
    Zitat
    Zeilen werden ausgeblendet, auch wenn man einen anderen Wert als 0 eingibt
    Also Worksheet_Change
    Gruß Matthias
    Das ist Zitat 2, widerspricht Zitat 1...;-) (owT)
    24.04.2017 11:40:08
    EtoPHG

    da sollte der Fragende sich mal klar ausdrücken ;)
    24.04.2017 11:44:07
    Matthias
    owT
    AW: da sollte der Fragende ...
    24.04.2017 14:41:30
    Wos
    A) Der Wert in N10 wird entweder manuell eingetragen (hat momentan Auswirkungen) oder aber mittels eines Formularsteuerelements verändert (hat momentan keine Auswirkungen). Müsste das Auslösen des Makros dann wahrscheinlich sowohl mit dem Formularsteuerelement als auch mit der Dateneingabe kombinieren.
    Aber aktuell läuft die Grundfunktion nicht einmal:
    B) Es ist so, dass wenn man IRGENDWAS eintippt, die Zeilen ausgeblendet werden und sich auch nicht wieder einblenden. Es muss aber ein anderer Fehler sein, da ich euren Code in einer leeren Datei positiv testen konnte. Ich muss versehentlich vom Rumprobieren irgendwo ein Makro drin haben, was mir die Funktion kaputt macht...
    Anzeige
    AW: da sollte der Fragende ...
    24.04.2017 14:54:54
    Daniel
    Hi
    jo, bei einer Manuellen Eingabe in die Zelle springt das Change-Event des Tabellenblatts an.
    bei einer Änderung über ein Formularsteuerelement passiert das nicht.
    hier musst du, wie schon geschrieben wurde, ein eigenes Makro in einem allgemeinen Modul erstellen und dieses mit dem Steuerelement verknüpfen, so dass das Makro bei Klick auf das Steuerelement aufgeführt wird.
    Wenn beides möglich ist, brauchst du auch beide Makros (Change-Event und mit dem Steuerelement verknüpftes Makro)
    die gezeigten codes sollten eigentlich korrekt ein- und ausblenden.
    Wenns in deiner Datei nicht funktioniert, dann ist es schwer den Grund zu nennen, wenn man die Datei nicht kennt. Du solltest dann die Datei hier hochladen, damit man die sich mal genauer anschauen kann.
    Es liegt ja nicht immer nur am Code.
    Gruß Daniel
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige