Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Automatisch Zeilen nach bestimmten Bedingungen ausblenden
#1
Hallo Leute,
Ich hab länger nichts mehr hier fragen müssen, aber nun wieder eine kleine Aufgabe die mich etwas vor ein Rätsel stellt:
Code:
PublicSub Zeilen_ausblenden()
Application.ScreenUpdating = False
If Cells(103, 3).Value = 0 Then
    Rows(103).Hidden = True
    Rows(104).Hidden = True
    Rows(129).Hidden = False
    Rows(130).Hidden = False
End If
If Cells(105, 3).Value = 0 Then
    Rows(105).Hidden = True
    Rows(106).Hidden = True
    Rows(107).Hidden = True
    Rows(108).Hidden = True
    Rows(109).Hidden = True
    Rows(110).Hidden = True
    Rows(131).Hidden = False
    Rows(132).Hidden = False
    Rows(133).Hidden = False
    Rows(134).Hidden = False
    Rows(135).Hidden = False
    Rows(136).Hidden = False
End If
If Cells(111, 3).Value = 0 Then
    Rows(111).Hidden = True
    Rows(112).Hidden = True
    Rows(137).Hidden = False
    Rows(138).Hidden = False
End If
Application.ScreenUpdating = True
Range("A1").Select
End Sub
Mit diesem "wunderschönen" Code sollen wenn in F103 0 als Ergebnis auftritt die Zeilen 103 und 104 ausgeblendet und dafür die Zeilen 129 und 130 eingeblendet werden.
...Ja ich weiß F ist nicht 3, aber ich habe davor einige verbundene Zellen, so dass die betroffene Zelle in Spalte F die dritte von links ist...was ich nicht weiß ist, ob sich mein Code dafür interessiert was ich denke xD
Meine Hauptprobleme sind:
Erstens die Frage zu beantworten, ob es ausreicht wenn ich den Code nur in dem entsprechenden Sheet habe der ich den besser in ein eigenes Modul packen und das spezifische Sheet im Code selbst festlegen sollte?
Zweitens die Frage ob ich den Code automatisch bei Änderung der betreffenden Zellinhalte laufen lassen kann (und ggf um die Umkehrfunktion erweitern) oder lieber mittels eines Buttons manuell starten sollte?

Vielen Dank schonmal^^
Antworten Top
#2
Hi,

nur auf die Schnelle: VBA ist es völlig egal, ob Zellen weiter vorne verbunden sind. F103 ist und bleibt Cells(103, 6) oder auch Cells(103, "F").
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#3
Hallöchen,

Erstens
der Code wirkt im aktiven Blatt. Lasse ihn ruhig in einem Modul, brauchst das Sheet nicht benennen, und er läuft bisher auch nicht ohne Dein Zutun.
Zweitens
Du kannst den Code gerne per Button starten. Falls er auf eine Eingabe reagieren soll, dann rufst Du ihn von dem entsprechenden Ereignismakro aus auf.
Was wäre die Umkehrfunktion? Mach überall aus True dann False?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#4
Vielen Dank, dann werd ich das mal auf die 6 ändern, und ja, umgekehrt wäre es dann von True auf False und so ändern, damit die Zeilen wieder eingeblendet werden, schließlich wären die Formelergebnisse standartmäßig auf 0.

Ja das war erstmal Absicht, um zu verhindern das der Code irgendwas macht bevor ich fertig bin. Am allerliebsten wäre es mir wenn ich den Button zum starten des Codes auf einem anderen Sheet unterbringen könnte.
Allerdings hab ich bisher noch nie mit den Buttons gearbeitet, nur mit Userforms, also fehlt mir an der Stelle ein wenig Wissen xD
Antworten Top
#5
Hallo,

so geht es vor und zurück mit im Code einzutragendem Arbeitsblatt (Tabellennamen):

Code:
Public Sub Zeilen_ausblenden()
  Application.ScreenUpdating = False
  With Worksheets("Tabelle1") '<<< hier entsprechenden Tabellennamen angeben
    .Rows(103).Resize(2).Hidden = .Cells(103, 3).Value = 0
    .Rows(129).Resize(2).Hidden = .Cells(103, 3).Value <> 0
    .Rows(105).Resize(6).Hidden = .Cells(105, 3).Value = 0
    .Rows(131).Resize(6).Hidden = .Cells(105, 3).Value <> 0
    .Rows(111).Resize(2).Hidden = .Cells(111, 3).Value = 0
    .Rows(137).Resize(2).Hidden = .Cells(111, 3).Value <> 0
  End With
  Application.ScreenUpdating = True
End Sub

Zum Thema Schaltfläche schau mal hier: Makro einer Schaltfläche zuweisen

Gruß Uwe
Antworten Top
#6
Ok, hab nebenher noch bissel rumgesucht und was gefunden, mir einen Button erstellt:
Code:
Sub Berechnen_Click()
Tabelle2.Zeilen_ausblenden
End Sub
der sollte nun den Überarbeiteten Code:

Code:
PublicSub Zeilen_ausblenden()
Application.ScreenUpdating = False
If Cells(103, 6).Value = 0 Then
    Rows(103).Hidden = True
    Rows(104).Hidden = True
    Rows(129).Hidden = False
    Rows(130).Hidden = False
Else
    Rows(103).Hidden = False
    Rows(104).Hidden = False
    Rows(129).Hidden = True
    Rows(130).Hidden = True
End If
If Cells(105, 6).Value = 0 Then
    Rows(105).Hidden = True
    Rows(106).Hidden = True
    Rows(107).Hidden = True
    Rows(108).Hidden = True
    Rows(109).Hidden = True
    Rows(110).Hidden = True
    Rows(131).Hidden = False
    Rows(132).Hidden = False
    Rows(133).Hidden = False
    Rows(134).Hidden = False
    Rows(135).Hidden = False
    Rows(136).Hidden = False
Else
    Rows(105).Hidden = False
    Rows(106).Hidden = False
    Rows(107).Hidden = False
    Rows(108).Hidden = False
    Rows(109).Hidden = False
    Rows(110).Hidden = False
    Rows(131).Hidden = True
    Rows(132).Hidden = True
    Rows(133).Hidden = True
    Rows(134).Hidden = True
    Rows(135).Hidden = True
    Rows(136).Hidden = True
End If
If Cells(111, 6).Value = 0 Then
    Rows(111).Hidden = True
    Rows(112).Hidden = True
    Rows(137).Hidden = False
    Rows(138).Hidden = False
Else
    Rows(111).Hidden = False
    Rows(112).Hidden = False
    Rows(137).Hidden = True
    Rows(138).Hidden = True
End If
Application.ScreenUpdating = True
End Sub
triggern.
Bisher bekomme ich allerdings eine Fehlermeldung:

Das Makro "Berechnen" kann nicht ausgeführt werden. Das Makro ist möglicherweise in dieser Arbeitsmappe nicht verfügbar, oder alle Makros wurden deaktiviert.

Hab ich da irgendetwas übersehen?
Antworten Top
#7
Hallöchen,

also, wenn Du den Button auf einem anderen Blatt positionierst

- musst Du im Code natürlich den Blattnamen verwenden
- musst Du zumindest zum Ausführen und, falls Du im Code das Blatt nicht zurückwechselst, zum Nachschauen die Blätter wechseln

Die ActiveX - Button-Codes funktionieren größtenteils wie im Userform. Du bekommst ebenfalls ein Click-Ereignis, wo Du dann das Makro aufrufen kannst.
Die Formular-Buttons haben keine Ereignisse, denen weißt Du ein Makro direkt zu.

Habe gerade gesehen, dass Uwe Dir einen entsprechenden "Erklär" - Link gesendet hat Smile
Aber so ist das manchmal, da überholt der eine den anderen  18


1) bitte nimm das Makro besser in ein Modul - dann reicht als Aufruf auch Zeilen_ausblenden
2) denke an den Blattnamen

kann man z.B. So machen

Code:
With Sheets("Tabelle1")
.Rows(...)
.Rows(...)
...
End With
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#8
Uwe, dein Code gefällt mir besser als meiner, werd ich so übernehmen, danke dir, den könnte ich auch so direkt in den Button schreiben...Ich lass es aber so, falls noch mehr dazu kommt, was wohl passieren wird so wie ich mich kenne xDDD

Ok Problem gelöst, Danke, aaaaber, das Ausblenden funktioniert, das wieder einblenden allerdings nicht... kann es sein das sich die Zellinhalte nicht aktualisieren, Formeln nicht auflösen, während eine Zelle ausgeblendet ist?

meeep, Problem gefunden, Uwes Code hat noch die 3 drin statt der 6 xD grad gesehen und geändert.
Funktioniert jetzt einwandfrei.
Code:
Sub Berechnen_Click()
Zeilen_ausblenden
End Sub
triggert
Code:
Public Sub Zeilen_ausblenden()
Application.ScreenUpdating = False
  With Worksheets("Ausdruck")
    .Rows(103).Resize(2).Hidden = .Cells(103, 6).Value = 0
    .Rows(129).Resize(2).Hidden = .Cells(103, 6).Value <> 0
    .Rows(105).Resize(6).Hidden = .Cells(105, 6).Value = 0
    .Rows(131).Resize(6).Hidden = .Cells(105, 6).Value <> 0
    .Rows(111).Resize(2).Hidden = .Cells(111, 6).Value = 0
    .Rows(137).Resize(2).Hidden = .Cells(111, 6).Value <> 0
  End With
Application.ScreenUpdating = True
End Sub
nun in Modul1

Danke euch
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste