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
Code:
Private Sub UserForm_Initialize()
  With ListBox1
    .List = Tabelle2.Cells(1).CurrentRegion.Value
    .ColumnCount = UBound(.List, 2) - 1
    For j = 1 To .ListCount - 1
      .List(j, 11) = Format(.List(j, 11), "hh:mm:ss")
    Next
  End With
End Sub
Hallo!

Ich habe nun folgenden Code:  -> Anzeige der Spalten 3, 1 & 5 in der Listbox1

Private Sub UserForm_Initialize()
  ListBox1.List = Cells(1).CurrentRegion.Value
  ListBox1.List = Application.Index(ListBox1.List, Evaluate("row(2:" & ListBox1.ListCount & ")"), Array(3, 1, 5))
End Sub


durch

Private Sub UserForm_Initialize()
  With ListBox1
    .List = Tabelle1.Cells(1).CurrentRegion.Value
    .ColumnCount = UBound(.List, 2) - 1
    For j = 1 To .ListCount - 1
      .List(j, 11) = Format(.List(j, 11), "hh:mm:ss")
    Next
  End With
End Sub


ersetzt.

Es kommt jedoch eine Fehlermedlung: Eigenschaft List konnte nicht abgerufen werden. Ungültiges Argument.

Warum das? Nur in der Spalte 5 stehen meinen Uhrzeiten drin.

Was bedeutet im Code eigentlich die Zahl 11? Woher weiß das Programm (durch den Code), dass nur das Uhrzeitformat in Spalte 5 drin steht?

Danke

Markus
Hättest du testen können:

Code:
Private Sub UserForm_Initialize()
  With ListBox1
    .List = Tabelle1.Cells(1).CurrentRegion.Value
    .List = Application.Index(.List, Evaluate("row(2:" & .ListCount & ")"), Array(3, 1, 5))
    .ColumnCount = UBound(.List, 2) - 1
    For j = 1 To .ListCount - 1
      .List(j, 2) = Format(.List(j, 2), "hh:mm:ss")
    Next
  End With
End Sub

Wenn nur 3 Spalten eingelesen werden in den Listbox dann ist ubound(.list) = 2
Aber: warum sollte man die Datenstruktur im Arbeitsblatt nicht isomorph zu dem Listbox machen ?
Lese mal bitte etwas mehr : arrays, listbox, combobox, lbound, ubound, application.index
Was du willst/fragst ist nicht für Anfänger in VBA.
Leider funktioniert das bei mir nicht. Es wird nur 1 Spalte in der Listbox angezeigt. Nur die Spalte 3 (aus Array (3, 1, 5).

Die Spalten 1 und 5 (hier mit Uhrzeitformat) wird leider nicht in der Listbox angezeigt.

Mmmmhhhh
Hallo,

es müsste auch heißen:

.ColumnCount = UBound(.List, 2) + 1

Gruß Uwe
Danke Uwe!

So klappt es nun.

Eine kleine Frage habe ich noch.

Es zeigt ja ab der 2. Zeile die Einträge aus der Tabelle an (..Evaluate("row (2:" & .ListCount & ")"), Array (3, 1, 2, 5))

Und die Umwandlung in das Uhrzeit-Format klappt jedoch erst ab der 3. Zeile..warum?

Der erste Eintrag in der Listbox hat noch den 0,33...-Wert. 
Erst ab der 2. Zeile in der Listbox wird das Format korrekt angezeigt.

Ändere ich Row in 1, wird die Spaltenüberschrift mit in der Listbox angezeigt und die 1. Zeile mit der Uhrzeit ist korrekt. Die Überschrift sollte aber nicht mit in die Listbox.

Gruß Markus
Hallo Markus,

For j = 0 To .ListCount - 1
.List(j, 2) = Format(.List(j, 2), "hh:mm:ss")
Next

Die Nummerierung der Zeilen und Spalten einer Listbox beginnt jeweils mit 0 (Null).

Gruß Uwe
Seiten: 1 2 3 4