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.

Ausgabe verschiedener Spalten in einer Listbox
#1
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.
Antworten Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Redgeier
Antworten Top
#3
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
Antworten Top
#4
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
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • Redgeier
Antworten Top
#5
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
Antworten Top
#6
Hi,

da hilft - wie so oft - F1 Wink

Zitat:Für eine ungebundene Datenquellegibt es einen Grenzwert von 10 Spalten (0 bis 9).
Antworten Top
#7
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Redgeier
Antworten Top
#8
Hi Uwe,

klar:
ColumnCount-Eigenschaft (Microsoft Forms) | Microsoft Docs
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • Kuwer
Antworten Top
#9
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
Antworten Top
#10
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
Antworten Top


Gehe zu:


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