Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Spalten automatisch ein- und ausblenden

Spalten automatisch ein- und ausblenden
24.04.2014 14:38:22
Gira
Hallo liebes Forum,
ich habe noch ein kleines Problem, bei dem ihr mir hoffentlich behilflich sein könnt:
Ich möchte in einer Excel-Datei alle Spalte eines bestimmten Bereiches ausblenden, die in Z. 38 den Wert 0 haben. Das Makro soll immer dann ausgeführt werden, wenn sich irgendwo in der gesamten Arbeitsmappe ein Wert ändert, also nicht nur bei Veränderung einer bestimmten Zelle.
Da ich mich nicht wirklich mit VBA auskenne, habe ich mir das Makro aus ein paar Beispielen zusammenkopiert:
Private Sub Worksheet_Change(ByVal Target As Range)
Sub spalte_einb_ausb()
Cells.EntireColumn.Hidden = False
Dim intSpalte As Integer
For intSpalte = 9 To 39
If Cells(38, intSpalte) = 0 Then
Columns(intSpalte).EntireColumn.Hidden = True
End If
Next
End Sub

Wie muss ich VBA sagen, dass dieses Makro immer ausgeführt werden soll, wenn sich irgendein Wert in der gesamten Arbeitsmappe ändert?
Vielen Dank für eure Unterstützung!
Viele Grüße
girasol

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 14:46:57
Philipp
Hallo girasol,
kopier das mal in das ThisWorkbook Modul.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Row = 38 And Target.Value = 0 Then
Target.EntireColumn.Hidden = True
End If
End Sub
Gruß
Philipp

Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 14:53:50
Gira
Hallo Philipp,
danke für deine schnelle Antwort.
Die folgenden Fragen habe ich zu deiner Antwort:
Statt des anderen, d.h. das bisherige soll ich löschen?
Wie weiß die Datei dann, in welche Lasche der Arbeitsmappe sie die besagten Spalten ausblenden soll?
Viele Grüße
girasol

Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 14:57:01
Philipp
Hallo girasol,
das bisherige Workbook_SheetChange() müsstest Du ersetzten, außer es sind noch andere Sachen da drinnen abgebildet. Ist halt schwierig zu sagen was Du da schon hast.
Was der code macht:
Es wird geguckt, was geändert wurde und wenn das in Zeile 38 ist und der neue Wert eine 0 ist, dann wird die Spalte ausgblendet.
Das Ganze funktioniert nicht wenn in Spalte 38 eine Formel ist und die Eingabe nicht direkt in der Zelle stattfindet.
Dazu bräuchten wir aber mehr Angaben oder eine Beispieldatei.
Gruß
Philipp

Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 15:19:32
Gira
Hallo Philipp,
also dieses Makro ist das einzige in der ganzen Arbeitsmappen - es sind keine weiteren vorhanden.
Ich probiere es jetzt noch ein wenig genauer zu beschreiben:
In Tabelle1 gibt es die Zeile 38. Diese Zeile ist ein Summenzeile. Pro Spalte sind die Kosten eines Jahres. D.h. I38 sind die Kosten des Jahres 2014, J39 die Kosten des Jahres 2015 usw. In AO38 ist dann die Summe über alle Jahre. Die Kosten eines Jahres berechnen sich abhängig von sehr vielen Parametern. Auch die Dauer ist abhängig von div. Parametern, d.h. die Spalten eines Jahres können Werte enthalten, müssen aber nicht. Daher möchte ich immer die Spalten (= Jahre) ausblenden, in denen keine Kosten auflaufen.
Viele Grüße
girasol

Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 14:52:27
hary
Moin
Wie aendert sich der Wert? Durch Formel oder haendisch?
gruss hary

AW: Spalten automatisch ein- und ausblenden
24.04.2014 14:57:14
Gira
Hallo Hary,
an verschiedensten Stellen der gesamten Datei können Parameter, also händische Werte, geändert werden.
Diese sind dann wieder irgendwie verformelt und führen dazu, dass sich die Zelle AO38 (= die Gesamtsumme der ganzen Rechnung) ändert.
Ich habe schon versucht, es so aufzubauen, dass bei Änderung des Wertes in AO38 das Makro startet, aber das scheint nicht zu funktionieren, da AO38 eine Formel und kein manueller Wert ist. Daher die Idee, das Makro auf eine Änderung irgendwo in der gesamten Arbeitsmappe zu beziehen.
Danke für deine Unterstützung und viele Grüße
girasol

Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 15:00:53
Philipp
Hallo girasol,
also kann es sein, dass eine Änderung in Blatt x eine 0 in Blatt y Zeile 38 bewirkt?
Muss also auf jedem Arbeitsblatt nach 0 gesucht werden? Und um welche Spalten handelt es sich genau?
Gruß
Philipp

AW: Spalten automatisch ein- und ausblenden
24.04.2014 15:15:42
EtoPHG
Hallo,
Diesen (und nur diesen) Code in das Tabellenblatt in dem die Spalten aus/eingeblendet werden sollen:
Private Sub Worksheet_Calculate()
Static dSaved As Double
Dim lCol As Long
If dSaved  Range("AO38").Value Then
dSaved = Range("AO38").Value
For lCol = 9 To 39
Cells(38, lCol).EntireColumn.Hidden = (Cells(38, lCol) = 0)
Next lCol
End If
End Sub
Gruess Hansueli

Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 15:21:51
Gira
Hallo Hansueli,
super, vielen Dank - damit funktioniert es (wie auch immer du das gemacht hast... ;-))!
Viele Grüße
girasol

AW: Spalten automatisch ein- und ausblenden
24.04.2014 15:40:26
Philipp
Hallo Hansueli,
geile Sache, besonders das '= (Cells(38, lCol) = 0)'.
Was genau soll aber das bewirken?
dSaved = Range("AO38").Value
Gruß
Philipp

Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 15:52:15
EtoPHG
Hallo Philipp,
Na was schon?: das Resultat der Summenformel in AO38 wird in die Variable dSaved geschrieben!
Damit wird das Ein-/Ausblenden nur dann durchgeführt, wenn sich diese Summe verändert hat (siehe vorhergehenden If), was im Endeffekt ein _Change-Ereignis von AO38 'simuliert'!
Gruess Hansueli

Anzeige
AW: Spalten automatisch ein- und ausblenden
24.04.2014 16:11:15
Philipp
Hallo Hansueli,
das mit dem Resultat der Summenformel war mir klar :p
Was mir nicht klar war, dass das Resultat da gespeichert wird.
Kommt das durch das static? Wann genau wird der Wert da wieder rausgelöscht?
Gruß
Philipp

AW: Spalten automatisch ein- und ausblenden
24.04.2014 16:40:50
EtoPHG
Hallo Philipp,
Static bedeutet, dass der Inhalt der Variablen solange erhalten bleibt, wie das Klassenmodul nicht entladen, bzw. neu geladen wird. Hier also solange die Arbeitsmappe geöffnet bleibt. Die Variable wird also beim Laden des Klassenmoduls auf 0 initialisiert und ändert sich anschliessend nur bei jeder Veränderung des Werts von AO38, falls eine Neuberechnung des Blatts angestossen wurde.
Gruess Hansueli

Anzeige
AW: Spalten automatisch ein- und ausblenden
25.04.2014 08:04:23
Philipp
Hallo Hansueli,
sehr coole Sache. Danke für die Erklärung.
Gruß
Philipp
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalten automatisch ein- und ausblenden in Excel


Schritt-für-Schritt-Anleitung

Um in Excel Spalten automatisch auszublenden, wenn bestimmte Bedingungen erfüllt sind, kannst du ein VBA-Makro verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, um dies einzurichten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle das richtige Arbeitsblatt: Doppelklicke auf das Arbeitsblatt, in dem du die Spalten automatisch ausblenden möchtest (z.B. „Tabelle1“).

  3. Füge den Code ein: Kopiere und füge den folgenden Code in das Modul ein:

    Private Sub Worksheet_Calculate()
       Static dSaved As Double
       Dim lCol As Long
       If dSaved <> Range("AO38").Value Then
           dSaved = Range("AO38").Value
           For lCol = 9 To 39
               Cells(38, lCol).EntireColumn.Hidden = (Cells(38, lCol) = 0)
           Next lCol
       End If
    End Sub
  4. Speichere die Datei: Achte darauf, die Datei im .xlsm-Format zu speichern, um die Makros zu aktivieren.

  5. Teste das Makro: Ändere einige Werte in deiner Tabelle und beobachte, ob die Spalten mit dem Wert 0 in Zeile 38 automatisch ausgeblendet werden.


Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht
    Lösung: Stelle sicher, dass der Code im richtigen Arbeitsblattmodul eingefügt wurde und dass die Datei als Makro-fähige Datei gespeichert wurde.

  • Fehler: Spalten werden nicht korrekt ausgeblendet
    Lösung: Überprüfe, ob in Zeile 38 tatsächlich die Werte 0 stehen und dass der Code nicht durch andere Formeln oder Bedingungen blockiert wird.

  • Fehler: Änderungen in AO38 bewirken keine Ausblendung
    Lösung: Beachte, dass das Makro nur auf manuelle Änderungen reagiert. Wenn AO38 eine Formel ist, stelle sicher, dass die berechneten Werte korrekt sind und das Makro entsprechend ausgelöst wird.


Alternative Methoden

Falls du keine VBA-Makros verwenden möchtest, kannst du auch die Funktion „Bedingte Formatierung“ nutzen, um Spalten visuell hervorzuheben, statt sie auszublenden. Für das automatische Ausblenden von leeren Spalten gibt es derzeit keine integrierte Excel-Funktion, die dies ohne Makros ermöglicht.


Praktische Beispiele

  • Beispiel 1: In einer Finanzübersicht möchtest du alle Spalten ausblenden, die in Zeile 38 den Wert 0 haben. Verwende den oben genannten VBA-Code, um diesen Prozess zu automatisieren.

  • Beispiel 2: Wenn du alle Spalten außer einer bestimmten Tabelle ausblenden möchtest, könntest du eine Bedingung im VBA-Code hinzufügen, um nur die gewünschten Spalten auszublenden.


Tipps für Profis

  • Nutze Benutzerdefinierte Funktionen in VBA, um komplexere Bedingungen für das Ausblenden von Spalten zu erstellen.
  • Achte darauf, dass deine Makros gut dokumentiert sind, damit du und andere Nutzer verstehen, wie sie funktionieren.
  • Wenn du häufig mit leeren Spalten arbeitest, erwäge, eine Funktion zu erstellen, die diese Spalten automatisch ausblendet, um die Übersichtlichkeit deiner Daten zu verbessern.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass das Makro immer funktioniert?
Antwort: Stelle sicher, dass die Arbeitsmappe im .xlsm-Format gespeichert ist und dass alle erforderlichen Bedingungen für das Ausblenden von Spalten erfüllt sind.

2. Frage
Kann ich auch Zeilen automatisch ausblenden ohne ein Makro?
Antwort: In Excel gibt es keine direkte Funktion, um Zeilen automatisch auszublenden ohne Makros. Du müsstest dafür ebenfalls VBA verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige