Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
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

Ein-/Ausblenden Abhängig

Ein-/Ausblenden Abhängig
23.09.2020 15:18:59
Rolf
Hallo.
Bisher funktioniert folgende VBA-Anweisung, die im Tabellenblatt („Tabelle5“) hinterlegt ist.
With Sheets("Tabelle6(1)")
.Rows("2:600").EntireRow.Hidden = False
End With
Application.Goto Sheets("Tabelle6(1)").Cells(Cells(11, 6), 1), True
Die Anweisung lautet:
Im Tabellenblatt “Tabelle6(1)” sollen die Zeilen ab Reihe 2 bis Reihe 600 eingeblendet sein.
Dann gehe im Tabellenblatt “Tabelle6(1)” zur Spalte A mit der Zeilennummer, die im aktiven Blatt (=„Tabelle5“) in der Zelle B6 steht.
Nun soll noch folgendes passieren:
Ausgehend von der aktuellen Zelle im Tabellenblatt („Tabelle6(1)“):
Gehe 1 Zelle nach unten. Ab da sollen alle Reihen bis zum Ende ausgeblendet werden.
Bis zum Ende meine ich entweder:
- bis zur Reihe 600
oder
- auswählen eines gesamten Bereichs zusammenhängender Zellen in einer Spalte
Hier gibt’s wohl irgendwie folgenden Code: End(xlDown)
Ich habe hunderte von Anweisungen ausprobiert. Leider ohne Erfolg. Immer nur „Fehlermeldungen“. Das ist nun mal so, wenn man von VBA keine Ahnung hat.
Bitte um Unterstützung.
Rolf

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ein-/Ausblenden Abhängig
23.09.2020 15:29:33
ChrisL
Hi Rolf
Worksheets("Tabelle6(1)").Rows(Worksheets("Tabelle5").Range("B6") + 1 & ":600").Hidden = True
oder
With Worksheets("Tabelle6(1)")
.Rows(Worksheets("Tabelle5").Range("B6") + 1 & ":" & .Cells(Rows.Count, 1).End(xlUp).Row).Hidden = True
End With
cu
Chris
Immer nur „Fehlermeldungen“ ...
23.09.2020 15:36:37
Matthias
Hallo,
welche „Fehlermeldungen“ denn?
und wieso Sheets("Tabelle6(1)")
nach der 6 ist doch bestimmt ein Leerzeichen und beim Kopieren wird normalerweise auf (2) erhöht.
wenns nicht hilft, dann lad doch Deine Mappe hier hoch inkl. dem Code der bei Dir zur „Fehlermeldung“ kommt.
Dann schaut sich das jemand an. Ich baue es nicht nach.
Gruß Matthias
Anzeige
AW: Immer nur „Fehlermeldungen“ ...
23.09.2020 21:45:16
Rolf
Inzwischen habe ich meine VBA-Anweisung ergänzt, in dem ich
eine Zelle nach unten gehe = ActiveCell.Offset(1, 0).Select
und dann die ganze Zeile/Reihe auswähle = ActiveCell.EntireRow.Select
Jetzt brauche ich nur noch eine ergänzende Anweisung, dass die Auswahl
ab der bereits ausgewählten Zeile/Reihe bis zur Zeile/Reihe 600 erweitert wird.
Im Anschluss könnte man die Auswahl ausblenden mit dem Code:
Selection.EntireRow.Hidden = True
Die Zeile/Reihe ab/von ist unterschiedlich, so dass mir eine feststehender Code, wie zum Beispiel: Sheets("Tabelle6(1)").Rows("22:600").Select nichts nützt.
Der Code müsste sich, wenn es denn überhaupt geht, ungefähr so zusammensetzen:
Sheets("Tabelle6(1)").Rows("ActiveRow:600").Select
Angefügt die Datei, die ich auf das Notwendigste reduziert habe.
Im Makro GeheZU ist nur teilweise zu erkennen, welche untauglichen Versuche ich unternommen habe.
https://www.herber.de/bbs/user/140392.xlsm
Anzeige
Du warst schon auf einen guten Weg ;-)
24.09.2020 03:22:58
Matthias
Hi,
Der Code gehört in ein allgemeines Modul z.B. Modul1 (nicht in die Tabelle)
hier mal ohne das ganze Select-Gedöns
 Sub GeheZu()
With Sheets("Tabelle6(1)")
.Rows("2:600").EntireRow.Hidden = False
End With
Application.Goto Sheets("Tabelle6(1)").Cells(Cells(11, 6) + 1, 1), True
Rows(ActiveCell.Row & ":600").EntireRow.Hidden = True
Application.Goto Cells(1, 1), True
End Sub
Gruß Matthias
AW: Du warst schon auf einen guten Weg ;-)
25.09.2020 10:01:31
Rolf
Hallo Matthias.
Sensationell - Danke. Für Dich mag die Beantwortung kein Problem gewesen sein. Das ist der feine Unterschied zwischen Profi und Laie.
Im Gegensatz zu vielen Antworten lieferst Du sogar das komplette Makro. Toll - Super.
Darf ich Deine Kenntnisse noch etwas strapazieren für folgende Fragen:
1. Ich habe das Makro in ein Modul kopiert. D. h. aber doch, dass ich das Makro nur starten darf, wenn das Tabellenblatt („Tabelle5“) aktiv ist, weil dort der Standort für das Tabellenblatt („Tabelle6(1)“) ausgelesen wird.
Höchst vorsorglich: Gibt’s ne Alternative?
2. Wie würde den die Anweisung lauten, wenn man statt „:600“ es mit „End(xlUp)“ gestalten würde.
3. Du hast am Schluss des Makros hinzugefügt, dass man in der Zelle A1 landet.
Ich würde aber gerne im Tabellenblatt („Tabelle6(1)“) in der Zelle „landen“, die in der „Tabelle5“ ausgelesen wurde.
Für Deine weiteren Mühen schon jetzt vielen Dank.
Rolf
Anzeige
Sprungmarke setzen
25.09.2020 18:19:35
Peter
Hallo Rolf,
ich habe in Deine Tabelle5 unter B1 eine Formel eingesetzt und das Makro1 erstellt. Durch Betätigen des Buttons müssten nunmehr die richtigen Ergebnisse erscheinen. Bitte mal ausprobieren; Rückmeldung wäre schön.
https://www.herber.de/bbs/user/140444.xlsm
Mit freundlichem Gruß
Peter Kloßek
oh, oh ...
25.09.2020 18:56:03
Matthias
da hab ich extra das Select-Gedöns verbannt und Du baust es wieder ein :-(
einfach Referenzieren . . .
25.09.2020 18:28:34
Matthias
Hallo,
zu: 1.
Ich habe das Makro in ein Modul kopiert. D. h. aber doch, dass ich das Makro nur starten darf, wenn das Tabellenblatt („Tabelle5“) aktiv ist, weil dort der Standort für das Tabellenblatt („Tabelle6(1)“) ausgelesen wird.

Es ist auch durch eine saubere Referenzierung aufs Tabellenblatt
auch aus einem anderen Blatt möglich.
Sub GeheZu()
With Sheets("Tabelle6(1)")
.Rows("2:600").EntireRow.Hidden = False
End With
Application.Goto Worksheets("Tabelle6(1)").Cells(Worksheets("Tabelle5").Cells(11, 6) +  _
1, 1), True
Rows(ActiveCell.Row & ":600").EntireRow.Hidden = True
Application.Goto Cells(1, 1), True
End Sub



zu: 2.
Wie würde den die Anweisung lauten, wenn man statt „:600“ es mit „End(xlUp)“ gestalten würde.

das könnte dann so aussehen:
Sub GeheZu()
Dim LoLetzte& ' & = AS Long
With Worksheets("Tabelle6(1)")
LoLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
With Sheets("Tabelle6(1)")
.Rows("2:" & LoLetzte).EntireRow.Hidden = False
End With
Application.Goto Worksheets("Tabelle6(1)").Cells(Worksheets("Tabelle5").Cells(11, 6) + 1, 1),  _
True
Rows(ActiveCell.Row & ":" & LoLetzte).EntireRow.Hidden = True
Application.Goto Cells(1, 1), True
End Sub



zu: 3.
Du hast am Schluss des Makros hinzugefügt, dass man in der Zelle A1 landet.
Ich würde aber gerne im Tabellenblatt („Tabelle6(1)“) in der Zelle „landen“, die in der „Tabelle5“ ausgelesen wurde.

Application.Goto Cells(Loletzte, 1), True
Ich hoffe ich habe das alles richtig verstanden.
Anzeige
Korrektur zu 2.
25.09.2020 19:11:02
Matthias
einmal With reicht :-)
Sub GeheZu()
Dim LoLetzte& ' & = AS Long
With Worksheets("Tabelle6(1)")
LoLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Rows("2:" & LoLetzte).EntireRow.Hidden = False
Application.Goto .Cells(Worksheets("Tabelle5").Cells(11, 6) + 1, 1), True
Rows(ActiveCell.Row & ":" & LoLetzte).EntireRow.Hidden = True
Application.Goto Cells(1, 1), True
End With
End Sub
Gruß Matthias
einmal GoTo auch ;)
25.09.2020 19:18:44
ChrisL
zusätzlich zwei Punkte ergänzt...
Sub GeheZu()
Dim LoLetzte& ' & = AS Long
With Worksheets("Tabelle6(1)")
LoLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Rows("2:" & LoLetzte).EntireRow.Hidden = False
.Rows(.Cells(Worksheets("Tabelle5").Cells(11, 6) + 1 & ":" & LoLetzte).EntireRow.Hidden = True
Application.Goto .Cells(1, 1), True
End With
End Sub

Anzeige
Nöö ... Syntaxfehler ... immer erst prüfen!! owT
25.09.2020 19:28:53
Matthias
AW: Nöö ... Syntaxfehler ... immer erst prüfen!! owT
27.09.2020 19:10:01
Rolf
Ich danke Matthias, Peter und Chris, dass sie sich mit meiner Anfrage auseinandersetzt haben. Die Absicht von Matthias, ohne Gedöns zu formulieren, ist eine tolle Sache, da er auch das gesamte Makro einbringt. Der Absicht entgegenstehend, formuliert Peter die Schritte für einen Laien nachvollziehbarer.
Nochmals vielen Dank für Euer mitwirken.
Eine abschließende Frage:
Kann man die Formel:
Rows(ActiveCell.Row & ":600").EntireRow.Hidden = True
Ohne Gedöns umschreiben - etwa so:
Rows(ActiveCell.Row bis End(xlUp)).EntireRow.Hidden = True
bzw. mit der Alternative
Rows(ActiveCell.Row bis End(xlUp) -1).EntireRow.Hidden = True
Bei der Alternative will ich bis zum Ende minus 1 reihe oder auch + 1 Reihe.
Ich danke Euch.
Rolf
Anzeige
AW: Nöö ... Syntaxfehler ... immer erst prüfen!! owT
27.09.2020 19:26:05
GerdL
Hallo Rolf!
Range(Cells(ActiveCell.Row, "A"), Cells(Rows.Count, "A").End(xlUp).Offset(-1, 0)).EntireRow.Hidden = True

Gruß Gerd
AW: Nöö ... Syntaxfehler ... immer erst prüfen!! owT
28.09.2020 08:55:36
ChrisL
Hi Matthias
Sorry fürs Reinquaken, aber ich konnte nicht nachvollziehen, warum man als Ersatz von Select eine Lösung mit GoTo und ActiveCell.Row wählt.
Mit dem Syntaxfehler hast du recht, da hätte ich besser die Zeile adaptieren sollen, die schon seit ein paar Tagen im Forum steht.
Sub GeheZu()
Dim LoLetzte& ' & = AS Long
With Worksheets("Tabelle6(1)")
LoLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
.Rows("2:" & LoLetzte).EntireRow.Hidden = False
.Rows(Worksheets("Tabelle5").Cells(11, 6) + 1 & ":" & LoLetzte).EntireRow.Hidden = True
Application.Goto .Cells(1, 1), True
End With
End Sub
cu
Chris
Anzeige
dann musst Du besser alles lesen ...
28.09.2020 23:30:03
Matthias
Hi Chris,
Zitat
... aber ich konnte nicht nachvollziehen, warum man als Ersatz von Select eine Lösung mit GoTo und ActiveCell.Row wählt.
Nun dieses GoTo war von Anfang an im Code vom TE. Das kam nicht von mir.
Wenn man nun schon mal in der Zelle ist kann man auch ActiveCell.Row nutzen.
Auch das wollte der TE so.
Viel weniger nachvollziehbar ist der Registerblattname
Worksheets("Tabelle6(1)"). Das Blatt würde ich nie so nennen.
Aber egal, er hat ja Lösungen erhalten und ist zufrieden.
Gruß Matthias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige