automatisch Zellen verstecken
Hallo Community,
ich habe mal wieder ein Problem wo ich nciht weiter komme.
Also ich habe eine Excel Tabelle in der die Spalten Kalenderwochen für mehrere Jahre darstellen. Die ganzen Werte werden alle in einem Diagramm dargestellt. Nun möchte ich aber zum Beispiel alle Spalten die leer sind (weil für diese Woche noch keine Daten verfügbar sind) versteckt werden. Zusätzlich soll er auch nur die letzten 10 Wochen anzeigen. Also von der Logik her würde ich sagen merke dir die letzte Spalte wo Werte drin sind, ziehe 10 Spalten ab und dann markiere Spalte 3 bis zu der errechneten Spalte. So und dann geht es mit diesem Code weiter:
Selection.EntireColumn.Hidden = True
Aber genau diese Umsetzung der Markeirung bekomme ich nicht hin.
Würde mich tierisch freuen wenn mir jemand helfn könnte.
Dank und Gruß
Thomas.
Jede Woche werden neue Daten automatisch eingefügt und hinten angehangen.
Antwort schreiben
Antwort 1 von Beverly vom 29.06.2019, 16:16 Options
Hi Thomas,
Range(Columns(3), Columns(IIf(IsEmpty(Cells(2, Columns.Count)), Cells(2, Columns.Count).End(xlToLeft).Column, Columns.Count) - 10)).Hidden = True
Anzahl der belegten Spalten wird in Zeile 2 ermittelt.
Bis später,
Karin
Antwort 2 von Handybike vom 02.07.2019, 08:53 Options
hey danke für die Hilfe, werde das gleich mal probieren!
Gruß Thomas
Antwort 3 von Handybike vom 09.07.2019, 14:28 Options
Hallo Karin oder auch andere,
also deine Lösung hat super funktioniert wenn man nicht auf Objekte zugreifen muss. Kurz zur Erklärung. Also ich habe eine Excel Datei in der ich das Makro geschrieben habe. Von dieser Datei aus öffnen ich drei weitere Excel Dateien (week, month und target) aus diesen Dateien suche ich mir bestimmte Daten raus, die dann in eine vierte Datei kopiert werden sollen. Und diese vierte Datei ist die Datei in der ich nur die letzten zehn Wochen angezeigt bekommen will.
Kurz noch zu den Variablen die ich verwende. Also
wbTemplate as Excel.Workbook
wsTepmlate as Excel.Worksheet
Im wbTemplate ist ganz normal die Exceldatei geöffnet und wsTemplate bekommt durch: Set wsTemplate = wbTemplate.Worksheets("main") ihr Arbeitblatt zugewiesen.
Wenn ich jetzt irgendetwas machen will, dann fange ich halt immer an mit "wsTemplate." und dann die jeweilgen Anweisungen.
Als ich jetzt das Ganze mit dem Quellcode von dir versucht habe, hat das leider nicht geklappt. Es kommt dann immer der Anwendungsfehler 1004 "Anwendungs- oder objektdefinierter Fehler"
wsTemplate.Range(Columns(3), Columns(IIf(IsEmpty(Cells(2, Columns.Count)), Cells(2, Columns.Count).End(xlToLeft).Column, Columns.Count) - 10)).Hidden = True
Hast du oder jemand anderes eine Idee, wie das anderste klappen könnte? Wenn ja immer her da mit bin für jeden Vorschlag dankbar.
Gruß Thomas