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.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen