Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Kopf in der Listbox füllen?

Kopf in der Listbox füllen?
09.05.2005 15:49:44
Holger
Hallo zusammen,
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
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopf in der Listbox füllen?
09.05.2005 15:53:06
Hajo_Zi
Hallo Holger,
in der Art.

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

Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem Windows 2000 SP4 und Excel Version 2000 SP3.



"Wer Rechtschreibfehler findet, darf sie behalten!"
Dies gilt auch für Bert.
Anzeige
AW: Kopf in der Listbox füllen?
09.05.2005 16:11:14
Holger
Danke schonmal,
aber ich habe leider nur VBA befriedigend, daher kannst Du mir eine einfachere Lösung geben, wie ich bei 3 Spalten die Header mit Text füllen kann.
Wenn das geht, auch ein drezeiliger Header wäre super.
MfG
Holger Wächter
AW: Kopf in der Listbox füllen?
09.05.2005 16:14:36
Herbert
Hi,
Header funktionieren nur bei Füllung mit RowSource.
mfg Herbert
Anzeige
AW: Kopf in der Listbox füllen?
09.05.2005 16:19:33
Holger
Und wie mache ich das?
UserForm.Listbox.RowSource(0) = "Test"
So geht es nicht!
MfG
Holger Wächter
AW: Kopf in der Listbox füllen?
09.05.2005 16:23:13
Herbert
Kannst du in den Eigenschaften einstellen: Tabelle1!A2:A10
Die Header stehen in Zeile 1
Header auf True einstellen.
mfg Herbert
AW: Kopf in der Listbox füllen?
09.05.2005 16:26:10
Holger
Wenn ich aber nichts aus einer Tabelle auslesen möchte? Geht das dann auch, das ich z.B. ein selbst erstelltes Objekt direkt zuweise ohne über eine Tabelle zu gehen?
Arbeite nämlich fast nur mit Userforms.
Habe die ColumnHeads schon auf True gesetzt.
MfG
Holger Wächter
Anzeige
AW: Kopf in der Listbox füllen?
09.05.2005 16:30:28
Herbert
Nein, das geht nur, wenn die Box an eine Tabelle gebunden ist.
mfg Herbert
AW: Kopf in der Listbox füllen?
09.05.2005 16:34:13
Holger
Gibt es absolut keine andere Möglihkeit die RowSource zu füllen?
Habe auch danach das Problem, wenn ich mit einer tabelle arbeite, das mein Array sich nicht mehr in die Listbox schreiben lässt. Dann kommt ZUgriff verweigert.
MfG
Holger Wächter
Anzeige
AW: Kopf in der Listbox füllen?
09.05.2005 16:38:02
Herbert
Header gehen nur bei Rowsource!
Wenn RowSource verwendet wird, kannst du nicht mit Array überschreiben,
also entweder oder.
mfg Herbert
AW: Kopf in der Listbox füllen?
09.05.2005 16:42:32
Holger
Ich dachte ich fülle den Header mit RowSource und die Listbox dann normal mit einem Array. Also geht das nicht!
Gibt es denn nicht eine schönere Lösung für eine vernünftige Kopfzeile? Vielleicht eine Listbox die man über der anderen Platziert. Welche sich mit scrollen nach rechts oder links der einen Listbox, mit verschiebt?
Oder vielleicht was ganz anderes?
MfG
Holger Wächter
Anzeige
AW: Kopf in der Listbox füllen?
09.05.2005 20:57:37
Holger
Hi,
mit Excelmitteln ist das immer Bastelei, nimm ein Listview, falls vorhanden. Kann aber Probleme bei der Weitergabe geben.
mfg Holger
AW: Kopf in der Listbox füllen?
10.05.2005 09:31:39
Holger
Danke,
denke das ist das beste!
MfG
Holger Wächter
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Kopf in der Listbox füllen


Schritt-für-Schritt-Anleitung

Um den Kopf einer Listbox in Excel VBA zu füllen, kannst Du die folgenden Schritte befolgen:

  1. Öffne Deinen VBA-Editor und füge ein UserForm hinzu.
  2. Füge eine Listbox zu Deinem UserForm hinzu.
  3. Verwende den folgenden VBA-Code im 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.


Häufige Fehler und Lösungen

  1. Header wird nicht angezeigt
    Stelle sicher, dass die ColumnHeads-Eigenschaft auf True gesetzt ist und dass RowSource korrekt auf einen Datenbereich verweist.

  2. 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.

  3. 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.


Alternative Methoden

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.


Praktische Beispiele

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.


Tipps für Profis

  • Nutze die ListBox-Einstellungen wie MultiSelect, um die Benutzererfahrung zu verbessern.
  • Überlege, ob Du das ListView verwenden möchtest, da es mehr Optionen für die Darstellung bietet.
  • Achte darauf, die richtigen Datenformate zu verwenden, um Komplikationen bei der Darstellung zu vermeiden.

FAQ: Häufige Fragen

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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige