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

Forumthread: Spalten mit VBA ein-ausblenden

Spalten mit VBA ein-ausblenden
10.07.2023 11:17:18
Holger

Hallo,

ich habe eine Tabelle in der ich mit einer Combobox, diese ist auf dem Tabellenblatt, Spalten nach ihrem Wert ein bzw. ausblenden möchte.
Dieses soll möglichst dynamisch sein.
Mit folgenden Code geht es, leider muss ich ihn immer anpassen wenn ich in Zeile 4 was ändere.
Der Bereich der Überprüft werden soll ist von I bis KP

Diesen Code muss ich für jede auswahl der Combobox, also Gruppe 1W bis Gruppe 23W schreiben und immer anpassen.

If ComboBox1 = "Gruppe 1W" Then
Columns("I:KP").Select
Selection.EntireColumn.Hidden = True 'alle Ausblenden
Range("BA:BA,CS:CS,DN:DN,DW:DW,ET:ET,FD:FD").Select
Selection.EntireColumn.Hidden = False
End If

Ich hoffe das mein Anliegen für euch verständlich ist, auch ohne Tabelle. :-)
Ich kann mir gut vorstellen das es bedeutend einfacher geht als ich es zur Zeit mache.

schon mal vielen Dank

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spalten mit VBA ein-ausblenden
10.07.2023 11:50:02
Daniel
Naja, deine Informationen sind etwas dürftig.
beispielsweise wäre interessant, was steht in Zeile 4, was änderst du und wie musst du den Code dann anpassen?
wie hängt das Makro mit den Inhalten von Zeile 4 zusammen? Aus dem gezeigten Codeschnipsel geht das nicht hervor, hier wird Zeile 4 nie verwendet.
die nächste Frage wäre, was ändert sich am Code von "Gruppe 1W" bis "Gruppe 2W"?
ich vermute mal, dass immer andere Spalten betroffen sind und sich somit die Range für das wieder einblenden ändert.
Sowas musst du uns sagen.

Wenn meine Vermutung richtig ist, kannst du dir die Programmierung so vereinfachen:
1. lege dir eine Hilfstabelle an, in der ersten Spalte die Gruppenbezeichnung ("Gruppe 1W") in der zweiten Spalte daneben die schreibst du dann die Zelladressen für die Range zum Einblenden: "BA:BA,CS:CS,DN:DN,DW:DW,ET:ET,FD:FD"

2. Verwende diese Tabelle mit beiden Spalten als Quelle für die Combobox.
hierzu bei ColumnCount die 2 eintragen und bei RowSource die Adresse der Tabelle mit Tabellenblattnamen.

der Code wäre dann
if Combobox1.ListIndex >= 0 then  
   Columns("I:KP").EntireColumn.Hidden = True 'alle Ausblenden
   Range(Combobox1.List(Combobox1.ListIndex, 1)).EntireColumn.Hidden = False
End if
wenn sich Spalten für die Gruppen ändern, dann änderst du dies einfach in der Tabelle ohne in den Code eingreifen zu müssen.
Gruß Daniel


Anzeige
AW: Spalten mit VBA ein-ausblenden
10.07.2023 12:13:54
Holger
Hallo Daniel,

in Spalte 4 stehen die Gruppen die ich über die Combobox anzeigen möchte, Gruppe 1W bis Gruppe 23W,
Die Combobox wird mit diesen Werten gefüllt. Habe die Werte auf einem Seperaten Blatt, diese ändern sich auch nicht.
In Zeile 4 stehen auch nur diese Werte, Gruppe 1W bis Gruppe 23W.

Ist es nicht möglich "I4" nach ihrem Wert zu überprüfen, wenn es der gleiche Wert ist wie in der Combobox dann die Zeile einblenden. ( Wert auf Visible = False setzen)
Das sollte dann mit jeder Zelle in Zeile 4 gemacht werden bis "KP4"

Da die Arbeitsmappe schon sehr Groß ist möchte ich nicht zusätzliche Tabellenblätter erstellen.

schon mal vielen Dank für deine Mühe


Anzeige
AW: Spalten mit VBA ein-ausblenden
10.07.2023 12:44:16
Daniel
Hi
dann gehts eigentlich noch einfacher mit nochweniger Code.
1. definiere für die Combobox eine Ausgabezelle (Zelladresse in Eigenschaft LinkedCell bzw Controlsource
2. in einer weiteren Zeile (z.B. Zeile 3) schreibst du in den Zellen I3:KP3 die Formel: =Wenn(I4=$A$3;"";1)
3. verwende dann folgenden Code:
with Range("I3:KP3")
    .EntireColumn.Hidden = False
    if .Worksheetfunction.Sum(.Cells) > 1 then .SpecialCells(xlcelltypeformulas, 1).EntireColumn.Hidden = true
end with
Gruß Daniel


Anzeige
AW: Spalten mit VBA ein-ausblenden
10.07.2023 12:02:55
GerdL
Moin Holger!

Columns("I:KP").Hidden = True 'alle Ausblenden
Select Case ComboBox1
Case "Gruppe 1W"
Range("BA:BA,CS:CS,DN:DN,DW:DW,ET:ET,FD:FD").EntireColumn.Hidden = False
Case "Gruppe 23W"
Range("BB:BB,CA:CA,DO:DO,DX:DX,EO:EO,FE:FE").EntireColumn.Hidden = False
End Select

Gruß Gerd


Anzeige
AW: Spalten mit VBA ein-ausblenden
10.07.2023 12:22:55
Rudi Maintaire
Hallo,
sowas?
Sub aa()
  Dim r As Range
  Application.ScreenUpdating = False
  For Each r In Range("I4:KP4")
    r.EntireColumn.Hidden = r > combobox1
  Next r
End Sub
Gruß
Rudi


AW: Spalten mit VBA ein-ausblenden
10.07.2023 12:31:34
Holger
Hallo Rudi,

vielen Dank das ist genau das was ich brauche.
Der Code macht genau das was ich wollte.
vielen dank an alle.

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalten mit VBA ein- und ausblenden


Schritt-für-Schritt-Anleitung

Um Spalten in Excel mithilfe von VBA ein- und auszublenden, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor mit ALT + F11.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (dein Arbeitsblattname)" klickst und "Einfügen" > "Modul" wählst.

  3. Kopiere den folgenden Code in das Modul:

    Sub Ausblenden()
       Dim r As Range
       Application.ScreenUpdating = False
       For Each r In Range("I4:KP4")
           r.EntireColumn.Hidden = r.Value > ComboBox1.Value
       Next r
       Application.ScreenUpdating = True
    End Sub
  4. Stelle sicher, dass deine Combobox den Namen ComboBox1 hat und die Werte in Zeile 4 stehen.

  5. Schließe den VBA-Editor und teste das Makro, indem du eine Auswahl in der Combobox triffst.


Häufige Fehler und Lösungen

  • Fehler: Die Spalten werden nicht ausgeblendet, wenn ich die Combobox auswähle.

    • Lösung: Überprüfe, ob die Combobox korrekt mit den Werten in Zeile 4 verknüpft ist. Stelle sicher, dass die Werte in der Combobox genau mit den Werten in Zeile 4 übereinstimmen.
  • Fehler: Der Code funktioniert nicht, wenn ich die Werte in der Combobox ändere.

    • Lösung: Stelle sicher, dass der Code auf die richtigen Zelladressen verweist. Eventuell musst du den Bereich in der For Each-Schleife anpassen.

Alternative Methoden

Wenn du eine einfachere Methode bevorzugst, um Spalten in Excel auszublenden, kannst du die folgenden Ansätze verwenden:

  1. Hilfstabelle für Gruppenbezeichnungen: Erstelle eine Hilfstabelle, in der die Gruppenbezeichnungen und die entsprechenden Zelladressen aufgelistet sind. Nutze diese Tabelle als Quelle für die Combobox.

    If ComboBox1.ListIndex >= 0 Then
       Columns("I:KP").EntireColumn.Hidden = True
       Range(ComboBox1.List(ComboBox1.ListIndex, 1)).EntireColumn.Hidden = False
    End If
  2. Formeln verwenden: Anstatt VBA zu verwenden, kannst du auch Formeln in den Zellen einsetzen, um die Sichtbarkeit der Spalten zu steuern.


Praktische Beispiele

Hier ist ein Beispiel, wie du die Sichtbarkeit von Spalten in deiner Excel-Tabelle steuern kannst:

Sub Beispiel()
   Dim ws As Worksheet
   Set ws = ThisWorkbook.Sheets("Sheet1") 'Ändere den Blattnamen nach Bedarf
   ws.Columns("I:KP").Hidden = True 'Alle Spalten ausblenden

   Select Case ws.ComboBox1.Value
       Case "Gruppe 1W"
           ws.Range("BA:BA,CS:CS,DN:DN,DW:DW,ET:ET,FD:FD").EntireColumn.Hidden = False
       Case "Gruppe 23W"
           ws.Range("BB:BB,CA:CA,DO:DO,DX:DX,EO:EO,FE:FE").EntireColumn.Hidden = False
   End Select
End Sub

Tipps für Profis

  • Nutze die Application.ScreenUpdating = False-Anweisung, um das Flackern des Bildschirms während der Ausblendung zu verhindern.
  • Experimentiere mit Excel VBA Spalten ausblenden-Shortcuts, um die Effizienz deiner Arbeit zu erhöhen.
  • Halte deine VBA-Codes modular, indem du separate Subs für verschiedene Aufgaben erstellst. So bleibt dein Code übersichtlich und wartbar.

FAQ: Häufige Fragen

1. Wie kann ich eine ausgeblendete Spalte in Excel einblenden? Um eine ausgeblendete Spalte einzublenden, klicke mit der rechten Maustaste auf die benachbarten Spaltenüberschriften und wähle "Einblenden".

2. Was ist der Unterschied zwischen .Hidden und .Visible in VBA? .Hidden setzt die Sichtbarkeit einer Spalte auf "ausgeblendet", während .Visible eine Eigenschaft ist, die die Sichtbarkeit steuert. In der Regel wird .Hidden verwendet, um Spalten auszublenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige