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

Selbe Zeilen ausblenden bei geänderter Zeilennummer

Selbe Zeilen ausblenden bei geänderter Zeilennummer
21.02.2024 13:47:08
Milos Komenda
Liebe VBA-Excel Cracks

Ich benutze für die Datenprüfung eine Auswahlliste und je nachdem, welchen Wert ich auswähle, werden in meiner Excel-Liste eine oder mehrere Zeilen ausgeblendet. Das funktioniert sehr gut. Meine Excel-Datei wird derzeit noch sehr häufig geändert. Wenn z.B. weitere Zeilen eingefügt oder gelöscht werden, ändern sich die Zeilennummern der auszublendenden Zeilen und folglich werden die falschen Zeilen ausgeblendet. Die Zelle mit der Auswahlliste habe ich mit einen Namen versehen und diesen im Makro verwendet, was gut funktioniert. Analog habe ich versucht, auch den auszublendenden Zeilen Namen zuzuweisen. Das Makro funktioniert dann leider nicht mehr.

Ich suche nun nach einer robusteren Lösung, bei der auch nach einer Änderung der Zeilennummern weiterhin nur die gewünschten Zeilen ausgeblendet werden. Dies würde mir ein ständiges Nachkorrigieren im VBA-Code ersparen.

Vielen Dank für eure Ideen.
Miloš

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selbe Zeilen ausblenden bei geänderter Zeilennummer
21.02.2024 14:05:56
Yal
Hallo Milos,

deine Beschreibung ist gut, aber ich kann mich trotzdem sehr viele Möglichkeiten vorstellen, wie es gebaut ist: wie wird es ausgewäht, wie wird es ausgeblendet, usw. d.h. eine Lösungsvorschlag kann nur theoretisch aufgestellt.
Besser stellst Du dem Forum eine Datei (bereinigt von sensiblen Daten) zur Verfügung.

Prinzipiell kannst Du eine Liste in einer Tabelle (Menü "Einfügen", "Tabelle") bei dem in einer Spalte den Eintrag steht. Per Verweis/Sverweis holst Du in deine Hauptliste in einer zusätzliche Spalte den Marker, ob ein Eintrag in der Auswahlliste vorhanden ist. Per Makro werden alle Zeilen ausgefiltert, die ein Treffer haben.

Alles weiters nur mit einer Datei.

VG
Yal
Anzeige
AW: Selbe Zeilen ausblenden bei geänderter Zeilennummer
21.02.2024 15:08:02
Milos Komenda
Hallo Yal

Vielen Dank für deine Antwort.

Ich habe mein Excelfile auf ein exemplarisches Beispiel (HideRaw.xlsm) reduziert. Das ganze File ist ein sehr langes Laborprotokoll, welches die Benutzer während ihrer Arbeit ausfüllen müssen. Jedes Register kann mehrere Auswahllisten enthalten, die für das Ein- und Einblenden unterschiedlicher Zeilen verantwortlich sind.

Der Auswahlliste habe ich den Namen "CZ0400_SELECT_PROTEIN_MEASUREMENT" zugewiesen und diesen verwende ich im VBA-Code um die Zelle anzusprechen. Je nach gewählter Messmethode werden darunter die nicht verwendeten Reihen ausgeblendet: Bei "00 - Select" bleiben alle Zeilen eingeblendet, bei "01 - Analytical balance" werden die Zeilen 34:40 ausgeblendet und bei "02 - Lunatic" verschwinden die Zeilen "15:33". Wenn ich nun irgendwo oberhalb der Zeile 15 weitere Zeile(n) einfüge (oder auch lösche) stimmt die VBE-Anweisung nicht mehr und es werden falsche Zeilen ausgeblendet. Dank dem Namen der Zelle mit der Auswahlliste hat dort eine Verschiebung keinen Auswirkung.

Ich suche nun eine Möglichkeit die auszublendenden Zeilen robust ansprechen zu können.

Danke für deinen Support!

LG, Miloš
Anzeige
AW: Selbe Zeilen ausblenden bei geänderter Zeilennummer
21.02.2024 16:28:55
Yal
Hallo Milos,

vermeide so weit es geht die typische Excel-Fehler: das praktische und das schön zu vermischen. Es geht selten gut miteinander. Wenn Du "praktisch" arbeitest, spricht gut strukturierte Datenablage, ist meinstens sehr leicht daraus etwas -separat- schön zu machen. Umgekehrt ist es selten einfach.

Der zweite Fehler ist, feste Einstellungen im Code zu verwenden. Es ist extrem pflegeintensiv. Wenn jemand sagt, es muss zwischen 02 und 03 ein neuen Fall geben, muss 03 dann 04 werden usw. Viel Spass beim Code anpassen.

Idealer ist der Code sachverhalt-neutral und wird demtensprechend nie geändert.
Im Prinzip geht es hier nur um einen Filter. In einer Spalte müsstest Du eine Liste der Fälle haben: ";1;", ";1;2;", ";1;3;", ";2;3;" usw. Dann wäre es relativ leicht zu sagen: Filtere anhand dieser Spalte alle Zeilen, die den Zahl der Auswahl ("01-xxx" wäre 1, "02-yyy" wäre 2, ...) beinhalten.
Man verwendet ";2;" zu filtern, weil "12" beinhaltet sowohl "1" als auch "2". ";2;" reagiert nur auf ";2;", nicht auf ";12;" Kommas sind auch möglich, hauptsache durchgängig.

Kommentar im Code sind gut, aber es ist kein Textverarbeitung! Also so wenig wie möglich. Was selbstrklärend ist, nicht kommentieren. Leerzeilen im Code ist eine Krankheit. Einrücken bringt die Lesbarkeit.

Dein Code könnte so aussehen, gehe aber lieber auf der Methode mit Filtern ein:
Private Sub Worksheet_Change(ByVal Target As Range)

'set timestamp in Column B of the row of the changed cell
If Target.Column = 35 Then Target.EntireRow.Range("C1").Value = Now 'EntireRow give back only 1 row. Within is everything "first row"

' Protein measurement rows Hidding
If Not Intersect(Target, Range("CZ0400_SELECT_PROTEIN_MEASUREMENT")) Is Nothing Then
Rows("15:40").Hidden = False 'Default: all rows visible
Select Case Range("CZ0400_SELECT_PROTEIN_MEASUREMENT").Value
Case "00 - Select!": Rows("15:40").Hidden = True
Case "01 - Analytical balance": Rows("34:40").Hidden = True
Case "02 - Lunatic": Rows("15:33").Hidden = True
End Select
End If
End Sub


Der Kommentar ist übrigens falsch, bzw. veraltet. Du hast irgendwann eine Spalte davor eingeführt und jetzt kommt das Datum in Spalte C. btw: genau hier mache ich den Fehler, die Zelle in Spalte C im Code festzuschreiben ;-) Aber Spalte "35" ist auch fest... Es ist nicht immer vermeidbar, feste Vorgabe zu vermeiden.
Arbeite lieber mit Tabellen (Menü "Einfügen", "Tabelle"), diese können anhand deren Spaltenname angesprochen werden.

VG
Yal
Anzeige
AW: Selbe Zeilen ausblenden bei geänderter Zeilennummer
22.02.2024 08:50:57
Milos Komenda
Hallo Yal

Vielen Dank für deine Erklärungen!

Die vielen Kommentare im Code sind/waren für mich, weil ich VBA nicht wirklich beherrsche. Ich musste immer verstehen, was der Code macht und mit Copy & Paste wurden sie weiter mitgeschleppt.

Mit der "Schönheit" der Excel-Sheets hast du natürlich recht. Aber das jetzige Aussehen erklärt sich aus der Historie des Dokuments. Die ersten Versionen hatten Vorgaben, die mich zu einem bestimmten Design gezwungen haben. Zum Beispiel mussten die einzelnen Arbeitsblätter ausdruckbar und handschriftlich ausfüllbar sein. Einige Meinungsbildner hatten damals nicht den Mut, sich in einem Schritt vom Papierprotokoll zu lösen.

Derzeit besteht das Dokument aus 47 einzelnen Arbeitsblättern, die mehr oder weniger irgendwie miteinander in Beziehung stehen. Mit der kommenden Version (bereits V08) darf ich mich erstmals von der Vorgabe "ausdruckbar" lösen. Und da das Dokument bis zur Version 7 mit dieser Vorgabe leben musste und die neue Version wie immer möglichst schnell verfügbar sein muss, kann ich am Design nur wenig ändern. Ja, und das ärgerlichste ist, dass niemand das Dokument je ausgedruckt hat und die damaligen Meinungsmacher sind in Rente.

Die Lösung mit dem Filtern hatte ich auch schon mal ausprobiert, bin aber am VBA gescheitert. Aber ich schaue mir diese Möglichkeit noch einmal an. Dein Codevorschlag zum Ausblenden sieht besser aus als meine Lösung und wäre einfacher zu pflegen. Falls ich es mit dem Filtern nicht hinkriege werde ich diese Lösung einbauen.

Ich finde es toll, dass du dir so viel Zeit für mein Problem genommen hast. Nochmals vielen Dank!

LG, Miloš
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige