Anzeige
Archiv - Navigation
1480to1484
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
Spalten je nach Wert ausblenden
21.03.2016 14:24:05
René
Hallo zusammen,
da ich ein Anfänger in Sachen VBA bin und auch nach intensiver Suche nicht das passende im Archiv gefunden, nun meine Frage an euch:
In der beigefügten Beispieltabelle:
https://www.herber.de/bbs/user/104500.xlsm
habe ich eine Einsatzplanung für einige Mitarbeiter erstellt.
Nun soll aber auf Grund der Übersichtlichkeit nur die zu planende KW angezeigt werden, d.h. die anderen Spalten sollen ausgeblendet werden.
Die zu planende KW wird in Zelle C6 ausgewählt.
Dann soll am besten mittels eines ToggleButton o.ä. alle Spalten, welche nicht zu dieser KW gehören ausgeblendet werden. Bei nochmaliger Betätigung des Buttons sollen die ausgeblendeten Spalten wieder eingeblendet werden.
Die Spalten A bis C sollen immer eingeblendet bleiben.
Wer kann mir helfen das passende Makro zu entwickeln und einzubinden?
Ich danke euch bereits im Voraus.
Grüße
René

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten je nach Wert ausblenden
21.03.2016 14:35:10
Steve
Hallo Rene,
probier es mal bitte so:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6")) Is Nothing Then
If Range("C6")  "" Then
Range("D1:NE1").EntireColumn.Hidden = True
For i = 4 To 369 'D bis NE
If Cells(8, i) = Range("C6") Then Columns(i).Hidden = False
Next i
End If
End If
Den Code im Code-Bereich der Tabelle einfügen (Rechtsklick auf den Reiter des Tabellenblattes - "Code-Bereich anzeigen")
lg Steve

AW: Spalten je nach Wert ausblenden
21.03.2016 15:02:38
René
Hallo Steve,
danke für die schnelle Antwort. Ich habe jetzt den Code eingefügt.
siehe Datei:
https://www.herber.de/bbs/user/104502.xlsm
Wie bekomme ich den aber zum laufen und wie verknüpfe ich diesen mit dem ToogleButton?
Grüße René

Anzeige
AW: Spalten je nach Wert ausblenden
21.03.2016 15:03:48
René
Hallo Steve,
danke für die schnelle Antwort. Ich habe jetzt den Code eingefügt.
siehe Datei:
https://www.herber.de/bbs/user/104502.xlsm
Wie bekomme ich den aber zum laufen und wie verknüpfe ich diesen mit dem ToogleButton?
Grüße René

AW: Spalten je nach Wert ausblenden
21.03.2016 15:16:05
Steve
Der Code wird bei jeder Änderung in Zelle C4 ausgeführt, sprich wenn du eine Auswahl aus der Dropdown auswählst.
Das mit dem Toggelbutton tut mir leid, das habe ich glatt vergessen. Ändere den Code im Code-Bereich der Tabelle wie folgt:
Private Sub ToggleButton1_Click()
If ToggleButton1.Value = False Then
Range("D1:NE1").EntireColumn.Hidden = False
Else: Call Worksheet_Change(Range("C6"))
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6")) Is Nothing Then
If Range("C6")  "" And ToggleButton1.Value = True Then
Range("D1:NE1").EntireColumn.Hidden = True
For i = 4 To 369 'D bis NE
If Cells(8, i) = Range("C6") Then Columns(i).Hidden = False
Next i
End If
End If
End Sub
Jetzt wird nur ausgeblendet wenn der Schalter gedrückt ist. Falls du es andersherum wünschst musst du an beiden Stellen im Code den Wert von ToggleButton1.Value von True auf False bzw. andersherum ändern.
lg Steve

Anzeige
AW: Spalten je nach Wert ausblenden
21.03.2016 15:17:06
Steve
Korrektur:
"Der Code wird bei jeder Änderung in Zelle C6* ausgeführt, [...]"
lg Steve

AW: Spalten je nach Wert ausblenden
21.03.2016 15:39:38
René
Hallo Steve,
danke für die schnelle perfekte Antwort. SUPER!
Kannst du mir noch sagen wie ich den Code ändern muss, damit nicht bei einer Änderung der Zelle C6, sondern erst nach Betätigung des Buttons der Code aktiviert wird.
Grüße
René

AW: Spalten je nach Wert ausblenden
21.03.2016 15:48:11
Steve
Hallo Rene,
dann macht aber der Togglebutton keinen Sinn. Dieser wirkt wie eine Raste, welche einen Wert hält bis man sie nochmal drückt. Z.B. aktiviere ich eine Filterfunktion, kann arbeiten und später deaktiviere ich sie.
Ich dachte das war so gewünscht damit du auch die anderen Wochen wieder einblenden kannst bei Bedarf.
Was du dagegen willst ist ein Commandbutton, welcher beim drücken einmalig etwas macht.

Private Sub CommandButton1_Click()
If Range("C6")  "" Then
Range("D1:NE1").EntireColumn.Hidden = True
For i = 4 To 369 'D bis NE
If Cells(8, i) = Range("C6") Then Columns(i).Hidden = False
Next i
End If
lg Steve

Anzeige
AW: Spalten je nach Wert ausblenden
21.03.2016 16:08:18
René
Hallo Steve,
mit dem ToggleButton sollte
a) nach Auswahl der KW in C6 die Ausblendung der anderen Spalten
b) nach nochmaliger Betätigung des Buttons wieder die Deaktivierung der Filterfunktion
erfolgen.
Deine Idee ist aber auch nicht schlecht. Ich denk da mal drüber nach.
Auf alle Fälle danke ich dir für die prompte perfekte Hilfe.
Grüße
René

AW: Spalten je nach Wert ausblenden
21.03.2016 16:27:17
Steve
Dann haben wir uns wohl missverstanden. Das ist doch genau was dieser Code gemacht hat:
Private Sub ToggleButton1_Click()
If ToggleButton1.Value = False Then 'Wenn nicht eingerastet blende alle ein
Range("D1:NE1").EntireColumn.Hidden = False
Else                                'Ansonsten führe zweites Makro aus (ausblenden)
Call Worksheet_Change(Range("C6"))
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6")) Is Nothing Then
If Range("C6")  "" And ToggleButton1.Value = True Then 'Wenn Togglebutton eingerastet
' blende alle KWs aus
Range("D1:NE1").EntireColumn.Hidden = True
' blende KW aus C6 wieder ein
For i = 4 To 369 'D bis NE
If Cells(8, i) = Range("C6") Then Columns(i).Hidden = False
Next i
End If
End If
End Sub

Einziger Unterschied zur Aufgabenstellung: Ist er bereits gedrückt (Filter aktiv) und du wählst in C6 eine andere KW aus filtert er sofort nach der neuen KW anstatt dass du erst den Filter herausnehmen und erneut einstellen muss. Zwei Mausklicks die man sich spart.
Kurze Erklärung zur Logik um zukünftige Missverständnisse zu vermeiden:
ToggleButton1_Click() wird bei jedem Drücken ausgeführt, jedoch muss der Code den Zustand des Buttons abfragen. Je nachdem blendet er alles ein oder führt das zweite Makro aus (ausblenden der anderen KWs / Punkt b).
Das zweite Makro wird aber nicht nur ausgeführt wenn du die Filterfunktion aktivierst, sondern auch wenn du etwas in C6 änderst, jedoch fragt es den Zustand des Togglebuttons ebenfalls ab und nur wenn er bereits eingerastet ist blendet es aus. Dies entspricht deinem Punkt a.
lg Steve
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige