Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Listenfeld mit Checkboxen Spalte einblenden
#1
Hallo an Alle,

gibt es eine Möglichkeit mit einem Formulasteuerelementen (Listenfeld), mit Hilfe von Checkboxen Spalten ein und Ausblenden kann?

Hier ein Bsp:

(siehe Attachment)

Ich benötige also ein Listenfeld mit Checkboxen "Name", "Adresse", "Umsatz" und "Steuernummer". Wenn ich dann "Name" auswähle soll es die Spalte einblenden. Wenn ich "Name" abwähle soll es die Spalte "Name" wieder ausblenden. Und so auch für "Adresse", "Umsatz" und "Steuernummer" etc. etc. Gibt es da eine Möglichkeit?

Ich habe also einen Kunden und kann mir bspw. nur die Spalte Umsatz anzeigen lassen oder Umsatz und Adresse etc. (also auch Mehrfachauswahl.)

Vielen Dank

Grußformel

.xlsm   113963.xlsm (Größe: 8,86 KB / Downloads: 5)
Antworten Top
#2
Hallöchen,

wie man ein Listenfeld anlegt, weißt Du?
Du schreibst die Spaltennamen in der Reihenfolge der Spalten. Dazu kannst Du dann diesen Code nehmen:

Code:
Private Sub ListBox1_Change()
For i = 0 To ListBox1.ListCount - 1
     Columns(i + 1).EntireColumn.Hidden = ListBox1.Selected(i)
Next
End Sub

Der Code ist nun auf die Spalten ab A ausgerichtet --> i+1
Willst Du zum Anfang eine Spalte weiter rechts, musst Du entsprechend mehr addieren.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Hallo,

das ist mit Formularsteuerelement nicht einfach umzusetzen bzw. nicht möglich.

Deshalb unten ein Beispiel mit einer ActiveX Listbox.

Vorgaben:
1. Eine Tabelle mit Namen "Tabelle1"
2. in dieser Tabelle ist eine Listbox aus den ActiveX Steuerelementen eingefügt und heißt: "ListBox1"
3. in dieser Tabelle stehen die Überschriften in Zeile 1 ab Spalte 1


Code hinter DieseArbeitsmappe:

Code:
Private Sub Workbook_Open()
 Lisbox_füllen
End Sub


Code in einem allgemeinen Modul:

Code:
Public boVar As Boolean

Sub Lisbox_füllen()
Dim i As Long
With Worksheets("Tabelle1").ListBox1
 .ListStyle = 1
 .MultiSelect = 1
 .Placement = 3
 boVar = True
 .Clear
 .AddItem "alle einblenden"
 For i = 1 To Worksheets("Tabelle1").Cells(1, 1).CurrentRegion.Columns.Count
   .AddItem Worksheets("Tabelle1").Cells(1, i)
 Next i
 boVar = False
End With
End Sub



Code hinter der Tabelle, in der die Listbox eingefügt ist:


Code:
Private Sub ListBox1_Change()
 Dim i As Long
 
 If boVar = False Then
   With Me.ListBox1
     If .ListIndex > -1 Then
       boVar = True
       Application.ScreenUpdating = False
       Me.Columns("A:D").Hidden = True
       If .Selected(0) Then
         Me.Columns.EntireColumn.Hidden = False
         For i = 1 To Me.ListBox1.ListCount - 1
           .Selected(i) = False
         Next i
       Else
         For i = 1 To Me.ListBox1.ListCount - 1
           If .Selected(i) = True Then Me.Columns(i).EntireColumn.Hidden = False
         Next i
       End If
       Application.Goto Cells(1, 1), True
       Application.ScreenUpdating = True
       boVar = False
     End If
   End With
 End If

End Sub


Und hier die Beispielmappe: 
.xlsm   Listbox Mehrfachauswahl Spalten-ein-ausblenden(ati).xlsm (Größe: 23,63 KB / Downloads: 22)
Gruß Atilla
Antworten Top
#4
Hallöchen,

habe gerade gemerkt, dass Du die selektierten Spalten sichtbar haben willst. Dann reicht mein minimaler Code nicht.

Hier noch die Ergänzungen.
Code im Tabellenblattmodul:
Code:
Private Sub ListBox1_Change()
If Me.ListBox1.Enabled = False Then Exit Sub
For i = 0 To ListBox1.ListCount - 1
  Columns(i + 1).EntireColumn.Hidden = Not (ListBox1.Selected(i))
Next
End Sub
Code in DieseArbeitsmappe:
Code:
Private Sub Workbook_Open()
With Tabelle1.ListBox1
  .Enabled = False
  For i = 0 To .ListCount - 1
    .Selected(i) = Not (Tabelle1.Columns(i + 1).EntireColumn.Hidden)
   Next
  .Enabled = True
End With
End Sub

Weitere Voraussetzungen:

- bei anderer Tabelle als Tabelle1 (Codename, nicht unbedingt identisch mit Blattname) entsprechend ändern
--> Codename siehe Projektexplorer, z.B. Tabelle1 (MeineErsteTabelle)
--> Blattname steht in Klammern, Codename davor
- Code reagiert nicht auf manuelles Ausblenden von Spalten, man sollte es also nur mit der Listbox tun
- Listbox wird über ListFillRange gefüllt, nicht über Code wie bei Atilla
--> Du musst also irgendwo nochmal die Überschriften platzieren
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Super! 1000 Dank schon mal für deine Hilfe! Ich werde das sobald ich Zeit finde ausprobieren!!!
Antworten Top
#6
Hallo nochmal,

Eine Frage habe ich doch noch. Besteht die Möglichkeit dass der Benutzer der Tabelle, ohne im Entwicklermodus zu sein, die ListBox per Drag and Drop verschieben kann?
Hintergrund ist, dass die Tabelle ziemlich groß wird. Man kann ja bereits irrelevante Spalten per CheckBox aus- und einblenden. Ich weiß aber nun nicht genau wo ich die ListBox am besten hinpacken soll ohne dass sie dem Nutzer beim lesen der Daten im Weg ist. Deswegen wäre es am Besten wenn man Sie einfach frei dort hinziehen könnte wo sie nicht stört..


Vielen Dank schon mal.

Grüße

Martin
Antworten Top
#7
Hallo,

das geht mit ActiveX Steuerelementen nicht aber mit Userformen

schau mal:


.xlsm   Userform Listbox Mehrfachauswahl Spalten-ein-ausblenden(ati-).xlsm (Größe: 22,59 KB / Downloads: 19)
Gruß Atilla
Antworten Top
#8
Hallo Murdock,

eventuell hast Du oben einen fixierten Bereich oder kannst einen anlegen, wo Du die Box weniger störend platzieren kannst.

Eine alternative wäre noch, die Box bei irgendwelchen Aktionen automatisch zu verschieben. Z.B. könnte man sie immer über eine zelle einer bestimmten Spalte platzieren, wenn man dort reinklickt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste