Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
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^^
Registriert seit: 28.08.2022
Version(en): 365
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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
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
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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 zuweisenGruß Uwe
Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
21.11.2022, 09:14
(Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2022, 09:22 von BuschB.)
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?
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
21.11.2022, 09:21
(Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2022, 09:25 von schauan.)
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 Aber so ist das manchmal, da überholt der eine den anderen 
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)
Registriert seit: 19.08.2022
Version(en): 16.0.15427.20210
21.11.2022, 09:24
(Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2022, 09:35 von BuschB.)
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
|