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
#11
Hallo Markus,

vielleicht so:

Code:
Private Sub UserForm_Initialize()
    Dim avntValues As Variant
    Dim ialngIndex As Long, lngIndex As Long
    Dim objArrayList As Object
    avntValues = SpaltenAuswahl(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

Private Function SpaltenAuswahl(varR As Variant) As Variant
  Dim i As Long, j As Long
  Dim varC As Variant, varL As Variant
              '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
  SpaltenAuswahl = varL
End Function
Gruß Uwe
 
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Redgeier
Antworten Top
#12
Hallo Uwe!

Leider kommt eine Fehlermeldung.

Laufzeitfehler 9 - Index außehalb des gültigen Bereichs

Woran kann das liegen?

Soll ich mal meine Datei hochladen?

Gruß Markus
Antworten Top
#13
Hallo Markus,

eine Datei könnte hilfreich sein.

Gruß Uwe
Antworten Top
#14
Gut..ich lade mal meine Datei hoch.

Kurze Erläuterung zur Tabelle. Dort habe ich beide Codes in der Userform (mit der Fehlermeldung) eingefügt. Tabelle 1 befinden sich meine Daten und im Reiter "Test" sind meine Vorstellungen geschrieben, welche 10 Spalten ich gern in meiner Listbox haben möchte.

Die Userform (Formulardarstellung) müsste auf meine ausgewählten Spalten noch angepasst werden.

Wie gesagt...ohne Deine Function funktioniert die Darstellung mit der Tabelle 1 über den Code:

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


Jedoch nur für die ersten 8 Spalten.

Gruß Markus


Angehängte Dateien
.xlsm   Testdatei_Ausgabe Listbox_verschiedene Spalten_mit neuen Code.xlsm (Größe: 60,92 KB / Downloads: 9)
Antworten Top
#15
Hallo Markus,

ersetze das Initialize Deines Bekannten, welches statisch die ersten 8 Spalten einliest, einfach durch meines.

Gruß Uwe
Antworten Top
#16
Hallo Uwe!

Ich hatte ja das "alte" Initialize durch deins mit der Function ersetzt,  da kam aber die Fehlermeldung mit dem Index.

Bei Dir funktioniert die Datei ohne Fehlermeldung? 

Wenn ja, könntest Du die Datei noch einmal hochladen?

Danke
Antworten Top
#17
Reicht schon:

Code:
Private Sub UserForm_Initialize()
    With ListBox1
        .List = Tabelle1.Cells(1).CurrentRegion.Value
       
        .ColumnCount = UBound(.List, 2) + 1
        .ColumnWidths = Join(Array(30, 0, 30, 30, 30, 30, 0, 0, 30, 0, 30, 30, 30, 0, 30), ";")
    End With
End Sub
Verwende dynamische Tabellen.
Sortiere im Arbeitsblatt, verzichte auf 'quicksort'.
'Call' ist schon Dezennia obsolet.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#18
Hallo snb,

wie wäre Dein Vorschlag für individuelle Reihenfolge der Spalten?

Gruß Uwe
Antworten Top
#19
Hallo Uwe!

Hat denn bei Dir meine Datei nach dem Austausch der Userform-Initialize funktioniert? 

Kam keine Fehlermeldung bzgl. Index??

Gruß Markus
Antworten Top
#20
Hallo Markus,

mit meiner Initialize aus #7 kommt keine Fehlermeldung.

Gruß Uwe
Antworten Top


Gehe zu:


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