wie kann man den Kopf in der Listbox füllen?
UserForm.Listbox.ColumnHeads.List = Liste
So hat es nicht geklappt. Hat da jemand eine Lösung?
MfG
Holger Wächter
Private Sub UserForm_Activate()
Dim rngSource As Object
Dim intColums As Integer
ListBox1.Tag = 1
Set rngSource = Range("A1").CurrentRegion
' Die oberste Zeile enthaelt die Feldnamen.
' Diese brauchen wir nur dort um die Columnheader darzustellen,
' aber nicht fuer die Listboxeintraege.
' Also den Datenbereich um die Erste Zeile reduzieren.
Set rngSource = rngSource.Offset(1, 0).Resize(rngSource.Rows.Count - 1, rngSource.Columns.Count)
' Spaltenanzahl des Datenbereichs ermitteln.
intColums = rngSource.Columns.Count
With Me.ListBox1
.ListStyle = fmListStyleOption ' Auswahlfeld zu Beginn der Zeile
' von Peter Haserodt
' nur eine Auswahl, bei .ListStyle = fmListStyleOption Optionbutton in Listbox
'.MultiSelect = fmMultiSelectSingle
' mehrere können ausgewählt werden,.ListStyle = fmListStyleOption checkboxen in Listbo
.MultiSelect = fmMultiSelectMulti
'.MultiSelect = fmMultiSelectExtended
' gibt eigentlich nur bei Liststyle Plain einen Sinn, funzt aber auch anders.
' Dies bewirkt, dass mit Shift und Strg Tasten eine Mehrfachauswahl getroffen
' werden kann
.ColumnCount = intColums
.ColumnHeads = True
.RowSource = rngSource.Address
End With
Set rngSource = Nothing
ListBox1.Tag = ""
End Sub
Um den Kopf einer Listbox in Excel VBA zu füllen, kannst Du die folgenden Schritte befolgen:
UserForm_Activate Ereignis:Private Sub UserForm_Activate()
Dim rngSource As Range
Dim intColums As Integer
Set rngSource = Range("A1:C1") ' Hier die Range für die Header anpassen
intColums = rngSource.Columns.Count
With Me.ListBox1
.ColumnCount = intColums
.ColumnHeads = True
.RowSource = "Tabelle1!A2:C10" ' Hier den Bereich für die Daten anpassen
End With
End Sub
Hierbei ist wichtig, dass die RowSource auf einen Bereich verweist, der die Daten enthält. Die ColumnHeads-Eigenschaft muss auf True gesetzt sein, um die Kopfzeilen anzuzeigen.
Header wird nicht angezeigt
Stelle sicher, dass die ColumnHeads-Eigenschaft auf True gesetzt ist und dass RowSource korrekt auf einen Datenbereich verweist.
Zugriff verweigert beim Arbeiten mit Arrays
Wenn Du eine RowSource angibst, kannst Du die Listbox nicht gleichzeitig mit einem Array füllen. Entscheide Dich entweder für RowSource oder für das Befüllen mit einem Array.
Keine Header bei Eigenen Objekten
Wenn Du die Listbox nicht an einen Datenbereich bindest, kannst Du keine Header anzeigen. Header sind nur möglich, wenn die Listbox über RowSource gefüllt wird.
Wenn Du keine RowSource verwenden möchtest, kannst Du stattdessen ein ListView verwenden. Das ListView unterstützt Header und ist flexibler bei der Anzeige von Daten. Hier ein Beispiel:
Private Sub UserForm_Activate()
With ListView1
.View = lvwReport
.ColumnHeaders.Add , , "Spalte 1", 1000
.ColumnHeaders.Add , , "Spalte 2", 1000
.ColumnHeaders.Add , , "Spalte 3", 1000
End With
End Sub
Das ListView ermöglicht eine bessere Anpassung und kann auch mit Scrollfunktionen arbeiten.
Um eine Listbox mit drei Spalten und Headern zu füllen, kannst Du den folgenden Code verwenden:
Private Sub UserForm_Activate()
With Me.ListBox1
.ColumnCount = 3
.ColumnHeads = True
.RowSource = "Tabelle1!A2:C10" ' Bereich anpassen
End With
End Sub
Stelle sicher, dass die ersten Zeilen Deiner Tabelle die Headernamen enthalten und dass die Daten im angegebenen Bereich vorhanden sind.
ListBox-Einstellungen wie MultiSelect, um die Benutzererfahrung zu verbessern.ListView verwenden möchtest, da es mehr Optionen für die Darstellung bietet.1. Wie kann ich mehrzeilige Header in einer Listbox erstellen?
Die Standard-Listbox unterstützt keine mehrzeiligen Header. Du kannst jedoch eine ListView verwenden, um dies zu erreichen.
2. Kann ich die Listbox ohne RowSource füllen?
Ja, Du kannst die Listbox mit einem Array füllen, jedoch sind dann keine Header verfügbar. Verwende RowSource, um Header mit der ListBox anzuzeigen.