Clever-Excel-Forum

Normale Version: Ausgabe verschiedener Spalten in einer Listbox
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Hallo!

Wie kann ich verschiedene Tabellenspalten in einer Listbox (Listbox1) ausgeben?

Ich habe eine große Tabelle (Tabelle1). In der Zeile 1 ist jeweils eine Bezeichnung für die Spalte. Ab Zeile 2 sind jeweils Eintragungen in den verschiedenen Spalten (von Spalte A bis Spalte O).

Wie bekomme ich es nun hin, dass die Eintragungen von nur 10 bestimmten Spalten (A, C, D, E, F, I, K, L, M, O) in meiner Listbox angezeigt werden? Die Eintragungen aus den Spalten B, G, H, J, N sollen demnach keine Beachtung in meiner Listbox1 finden.

Wie würde das gehen - mit welchem Code? Die Listbox1 befindet sich auf meiner Userform (Userform1).

Vielen Dank

P.S. Ich hatte bisher immer nur Beispiele gefunden, wo alle Spalten nacheinander (z.B. von Spalte A - Spalte F) in einer Listbox angezeigt werden. Ich möchte wie gesagt, nicht alle Spalten nacheinander in meiner Listbox ausgeben.
Hallo,

Code:
Private Sub UserForm_Initialize()
  Dim i As Long, j As Long
  Dim varC As Variant, varR As Variant
  varR = Worksheets("Tabelle1").Range("B1:O1").CurrentRegion.Value
              'A, C, D, E, F, I, K , L , M , O
  varC = Array(1, 3, 4, 5, 6, 9, 11, 12, 13, 15)
  With Me.ListBox1
    For i = 2 To UBound(varR)
      .AddItem varR(i, varC(0))
      For j = 1 To UBound(varC)
        .List(i - 2, j) = varR(i, varC(j))
      Next j
    Next i
  End With
End Sub

Gruß Uwe
Vielen Dank Uwe!

Ich habe den Code jetzt so übernommen. Bei mir wird aber nur die Spalte A (mit den Einträgen ab Zeile 2) in der Listbox angezeigt! 

Spalte C (3), D (4) usw. nicht..

Woran kann das liegen?

Und noch eine Frage: 

varR = Worksheets("Tabelle1").Range("B1:O1").CurrentRegion.Value
              
Warum hier .Range ("B1:O1")???

Die Eingaben beginnen doch bei A2..

Vielen Dank 

Gruß 

Markus
Hi,

Du musst die ColumnCount-Eigenschaft der Listbox entsprechend anpassen.

Zur 2. Fage:

Bau mal testweise ein:

MsgBox Worksheets("Tabelle1").Range("B1:O1").CurrentRegion.Address
Danke Boris!

Habe ColumnCount auf 10 gestellt und nun werden alle 10 auszugebenden Spalten angezeigt. 

Wie viele Spalten kann man max. in einer Listbox anzeigen??

Geht auch 12, 13 oder mehr? Müsste man dafür nur den Wert ColumnCount erhöhen?

Gruß Markus
Hi,

da hilft - wie so oft - F1 Wink

Zitat:Für eine ungebundene Datenquellegibt es einen Grenzwert von 10 Spalten (0 bis 9).
Hallo Markus,

so geht es auch mit mehr als 10 Spalten:

Code:
Private Sub UserForm_Initialize()
  Dim i As Long, j As Long
  Dim varC As Variant, varL As Variant, varR As Variant
  varR = Worksheets("Tabelle1").Range("B1:O1").CurrentRegion.Value
              'A, C, D, E, F, I, K , L , M , O
  varC = Array(1, 3, 4, 5, 6, 9, 11, 12, 13, 15)
  ReDim varL(1 To UBound(varR), 0 To UBound(varC))
  For i = 2 To UBound(varR)
    For j = 0 To UBound(varC)
      varL(i - 1, j) = varR(i, varC(j))
    Next j
  Next i
  Me.ListBox1.List = varL
End Sub

Hi Boris,
könntest Du bitte mal den Link zu dem 10-Spalten-Limit  posten? Ich finde es nicht.  Blush

Gruß Uwe
Hi Uwe! 

Klappt wunderbar mit mehr als 10 Spalten in der Listbox.Wenn nicht alle Spalten mit einmal angezeigt werden können,  scrollt man einfach nach rechts! Smile

Vielen Dank!

Gruß Markus
Hallo Uwe!

Danke nochmal für den Code für das Ausgeben von bestimmten Spalten in einer Listbox, sogar mait mehr als 10 Spalten.

Ich habe von einem Bekannten Hilfe für eine ähnliche Umsetzung bekommen und wollte nun Deine Umsetzung in den vorhandenen Code einbauen, also dass ich eben nur bestimmte Spalten in meiner Listbox anzeigen lasse.

Ich bekomme es aber nicht hin, die bestimmten Teile von Deinem Code in meinen vorhandenen Code einzuarbeiten. Vielleicht kannst Du mir noch nochmal helfen.

Hier der Code von dem Bekannten (Umsetzung Ausgabe von Spalten - hier aber nur für die ersten 8 Spalten meiner Tabelle):

Private Sub UserForm_Initialize()
    Dim avntValues As Variant
    Dim ialngIndex As Long, lngIndex As Long
    Dim objArrayList As Object
    avntValues = GetValues
 
    With ListBox1
        .ColumnCount = UBound(avntValues, 2)
        .List = avntValues
    End With
    Set objArrayList = CreateObject(Class:="System.Collections.ArrayList")
    For lngIndex = 1 To 8
        For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
            If Not objArrayList.Contains(avntValues(ialngIndex, lngIndex)) Then _
                Call objArrayList.Add(avntValues(ialngIndex, lngIndex))
        Next
        Call objArrayList.Sort
        Controls("ComboBox" & CStr(lngIndex)).List = objArrayList.ToArray
        Call objArrayList.Clear
    Next
    Set objArrayList = Nothing
End Sub

Wie kann ich diesen Code nun abändern, um eben nur bestimmte Spalten aus der Tabelle anzeigen zu lassen?


Hier nochmal Dein Code:

Code:
rivate Sub UserForm_Initialize()

  Dim i As Long, j As Long

  Dim varC As Variant, varL As Variant, varR As Variant

  varR = Worksheets("Tabelle1").Range("B1:O1").CurrentRegion.Value

              'A, C, D, E, F, I, K , L , M , O

  varC = Array(1, 3, 4, 5, 6, 9, 11, 12, 13, 15)

  ReDim varL(1 To UBound(varR), 0 To UBound(varC))

  For i = 2 To UBound(varR)

    For j = 0 To UBound(varC)

      varL(i - 1, j) = varR(i, varC(j))

    Next j

  Next i

  Me.ListBox1.List = varL

End Sub

Vielen Dank

Gruß Markus
Seiten: 1 2 3 4