Anzeige
Archiv - Navigation
1932to1936
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 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

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


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


Anzeige
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.

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige