Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeile in Listbox formatieren

Zeile in Listbox formatieren
26.02.2009 10:58:16
Beni
Hallo Experten
Ich habe eine Frage bezüglich dem Formatieren der ersten Zeile einer Listbox in einem Userform. Mit folgendem Befehl fülle ich die Listbox mit den Exceldaten:
ListBox1.List = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1).Range("A1:N" & Anzahlzeilen).Value
Wie kann ich nun die erste Zeile der Listbox - da diese Zeile die Überschriften darstellen - z.B. Fett oder grau hinterlegt, darstellen? Geht dies überhaupt? Oder gibt es eine bessere Möglichkeit die Überschriften hervorzuheben? ColumnHeads?
Vielen Dank bereits für euer Feedback!
Es grüsst Beni
Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeile in Listbox formatieren
26.02.2009 11:20:08
harry
Hallo Beni,
ich würde die Überschrift gar nicht in die Listbox mit übernehmen,
denn dann kann man ja die Überschrift als Wert auswählen,
ist das wirklich gewünscht.
Platziere doch ein Label über Deiner Listbox und schreib die Überschrift da rein
Gruß
harry
AW: Zeile in Listbox formatieren
26.02.2009 11:28:12
Beni
Hallo harry
Vielen Dank für deinen Tipp... nur hat ja jede Spalte ihre Überschrift und die Liste, die ich in die Listbox einfüge hat 14 Spalten. Somit würde die Listbox fast Bildschirmbreit, wenn ich alle auf einen Blick anzeigen lasse. Wenns eben geht, würde ich eine kleinere Form der Listbox bevorzugen, in der man dann eben scrollen muss.
Gruss
Beni
Anzeige
AW: Zeile in Listbox formatieren
26.02.2009 13:14:49
D.Saster
Hallo,
formatieren geht nicht.
Mit ColumnHeads bist du richtig.
Gruß
Dierk
AW: Zeile in Listbox formatieren
26.02.2009 13:26:43
Beni
Hallo Dierk
Vielen Dank für ein Input. Kannst du mir auch konkret helfen? Mein jetziger Code ist:

Private Sub UserForm_Initialize()
Dim AnzahlZeilen As Integer
AnzahlZeilen = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1).UsedRange.Rows. _
Count
ListBox1.List = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1).Range("A2:I" &  _
AnzahlZeilen).Value
End Sub


Er liest Daten aus einer Tabelle und gibt sie in der Listbox wieder. Wie kann ich denn die Überschriften der ersten Zeile als ColumnHeads verwenden?
Vielen Dank schonmal!
Gruss
Beni

Anzeige
AW: Zeile in Listbox formatieren
26.02.2009 15:49:50
D.Saster
Hallo,

Private Sub UserForm_Initialize()
Dim AnzahlZeilen As Integer
AnzahlZeilen = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1).UsedRange.Rows. _
Count
ListBox1.List = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1).Range("A2:I" &  _
AnzahlZeilen).Value
Listbox1.ColumnHeads=True
End Sub


Gruß
Dierk

Anzeige
AW: Zeile in Listbox formatieren
26.02.2009 16:08:30
Beni
Hi Dierk
Merci Dierk, aber der Befehl fügt nur die Heads ein, befüllt diese aber nicht. Kannst du mir noch mitteilen, wie ich diese ColumnsHeads befüllen kann? Hab irgendwie gelesen mit dem Befehl RowSource, aber ich krieg nur die Spaltenbeschriftung rein, nicht aber die Daten aus Zeile eins...
Vielen Dank bereits!
Gruss
Beni
Anzeige
AW: Zeile in Listbox formatieren
26.02.2009 16:26:51
Renee
Hi Beni,
Vielleicht so:

Private Sub UserForm_Initialize()
Dim AnzahlZeilen As Long
AnzahlZeilen = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1) _
.UsedRange.Rows.Count
ListBox1.ColumnHeads = True
ListBox1.RowSource = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1) _
.Worksheets(1).Range("A2:B" & AnzahlZeilen).Address
End Sub


GreetZ Renée
Anzeige
AW: Zeile in Listbox formatieren
26.02.2009 16:42:00
Beni
Hi Renée
Merci, aber leider folgt dann die Fehlermeldung:
"Objekt unterstützt diese Eigenschaft oder Methode nicht"
Was muss ich noch anpassen, damit es klappt?
Gruss
Beni
k.A. ich sehe Deine Objekte nicht ! (owT)
26.02.2009 16:54:40
Renee

vielleicht geht es so?
26.02.2009 19:51:37
Tino
Hallo,
wenn ich mir Deine Frage durchlese, komme ich auf solch einen Code.
Teste mal.
Private Sub UserForm_Initialize()
 Dim rBereich As Range
 Dim Dateiname$, TabellenName$, ZellAdresse$
 Dim sFormel As String

Dateiname$ = frmAkontoImport.boxImport.Value

With Workbooks(Dateiname$)
 TabellenName$ = .Worksheets(1).Name
 Set rBereich = .Worksheets(1).UsedRange
 Set rBereich = Range("A2:N" & rBereich.Cells(rBereich.Cells.Count).Row)
 ZellAdresse$ = rBereich.Address
End With
 
sFormel = "[" & Dateiname & "]" & TabellenName & "!" & ZellAdresse
 
 With ListBox1
  .ColumnCount = rBereich.Columns.Count
  .ColumnHeads = True
  .RowSource = sFormel
 End With

Set rBereich = Nothing
End Sub


Gruß Tino

Anzeige
AW: vielleicht geht es so?
27.02.2009 08:38:52
Beni
Hi Tino
Vielen Dank für dein Code! Hab ihn soeben getestet, nur leider wird beim befüllen der RowSource erneut nur eine Fehlermeldung produziert:
"Eigenschaft RowSource konnte nicht gesetzt werden. Ungültiger Eigenschaftswert."
Wie weiter...?
Gruss
Beni
AW: vielleicht geht es so?
27.02.2009 09:21:40
Tino
Hallo,
irgendwas stimmt bei Dir nicht.
Baue mal den Code unten ein,
Du bekommst eine Message Box mit einem Text der in etwa so aussehen muss.
[DateiName.xls]Tabelle1!$A$2:$N$29
Sieht der bei Dir anders aus?
Stimmt der Inhalt?
Ist der Dateiname richtig, auch die Extension (.xls oder .xlsm usw...)?
Ist der Tabellenname richtig?
Ist die Zelladresse richtig?
Private Sub UserForm_Initialize()
 Dim rBereich As Range
 Dim Dateiname$, TabellenName$, ZellAdresse$
 Dim sFormel As String

Dateiname$ = frmAkontoImport.boxImport.Value

With Workbooks(Dateiname$)
 TabellenName$ = .Worksheets(1).Name
 Set rBereich = .Worksheets(1).UsedRange
 Set rBereich = Range("A2:N" & rBereich.Cells(rBereich.Cells.Count).Row)
 ZellAdresse$ = rBereich.Address
End With
 
sFormel = "[" & Dateiname & "]" & TabellenName & "!" & ZellAdresse

MsgBox sFormel 'Test Message 
 
 With ListBox1
  .ColumnCount = rBereich.Columns.Count
  .ColumnHeads = True
  .RowSource = sFormel
 End With

Set rBereich = Nothing
End Sub


Sonst kann ich nicht weiter helfen oder ich komme bei Dir mal kurz vorbei. ;-)
Gruß Tino

Anzeige
AW: vielleicht geht es so?
27.02.2009 10:05:01
Beni
Hallo
Jup, die Meldung in der Messagebox lautet:
"[Testliste Akontozahlungen.xls]Tabelle1!$A$2:$N$36"
Scheinbar kann dieser Bereich nicht in die Listbox eingefügt werden... hmmm... kann es sein, dass ein Eigenschaftswert der Listbox falsch ist? BoundColumn = 0; ColumnCount = -1 ?
Ich erklär vielleicht am besten mal die Ausgangssituation: Ich habe eine Excel-Anwendung gebastelt, in der täglich Daten von anderen Exceltabellen importiert werden. Ich starte per Knopfdruck auf der Anwendung ein Import. Dabei wird eben diese Listbox als Import-Vorschau angezeigt. Diese enthält nun eben die Daten, die von der anderen Exceltabelle stammen. In dieser Liste sind in der obersten Zeile immer die Überschriften jeder Spalte, die in der Listebox eben als ColumnHeads abgebildet werden sollen.
Aber eben, das Problem ist eigentlich nur, dass die Überschriften nicht in die ColumnHeads wollen... :(
NB: Vorbeikommen wäre wohl die beste Lösung, aber vielleicht nicht gerade ökonomisch sinnvoll... ;)
Vielen Dank! Gruss
Beni
Anzeige
AW: vielleicht geht es so?
27.02.2009 10:12:47
Tino
Hallo,
es liegt an den Leerzeichen im Dateinamen.
Ersetze die Zeile

sFormel = "[" & Dateiname & "]" & TabellenName & "!" & ZellAdresse


durch diese


sFormel = "'[" & Dateiname & "]" & TabellenName & "'!" & ZellAdresse


Gruß Tino

Anzeige
AW: vielleicht geht es so?
27.02.2009 10:16:48
Beni
Yes! Hey, vielen Dank Tino!
Es klappt ja wunderbar... so ein Ärger nur wegen dem Dateinamen!
machs gut
Gruss
Beni
supen, bis zum nächten mal oT.
27.02.2009 10:25:28
Tino
;

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

Zeile in Listbox formatieren


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne deine Excel-Datei und erstelle ein UserForm, falls noch nicht vorhanden.

  2. ListBox hinzufügen: Füge eine ListBox (z.B. ListBox1) auf dem UserForm hinzu.

  3. Datenquelle festlegen: Verwende den folgenden Code, um die ListBox mit Daten aus einer Excel-Tabelle zu füllen:

    Private Sub UserForm_Initialize()
        Dim AnzahlZeilen As Long
        AnzahlZeilen = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1).UsedRange.Rows.Count
        ListBox1.ColumnHeads = True
        ListBox1.RowSource = Workbooks(frmAkontoImport.boxImport.Value).Worksheets(1).Range("A1:N" & AnzahlZeilen).Address
    End Sub
  4. ColumnHeads aktivieren: Setze das ColumnHeads-Attribut auf True, um die erste Zeile als Überschrift zu verwenden.

  5. Überprüfung: Teste dein UserForm, um sicherzustellen, dass die Daten korrekt angezeigt werden.


Häufige Fehler und Lösungen

  • Fehler: "Objekt unterstützt diese Eigenschaft oder Methode nicht"
    Lösung: Überprüfe, ob die ListBox korrekt referenziert ist und ob die Excel-Datei geöffnet ist.

  • Fehler: "Eigenschaft RowSource konnte nicht gesetzt werden. Ungültiger Eigenschaftswert."
    Lösung: Stelle sicher, dass die Zelladresse korrekt ist und keine Leerzeichen im Dateinamen vorhanden sind. Ersetze die Zeile:

    sFormel = "[" & Dateiname & "]" & TabellenName & "!" & ZellAdresse

    durch:

    sFormel = "'" & "[" & Dateiname & "]" & TabellenName & "'" & "!" & ZellAdresse

Alternative Methoden

Eine alternative Methode zur Anzeige von Überschriften in einer ListBox ist das Platzieren von Labels über der ListBox. Du kannst die Überschriften manuell in Labels einfügen, die über den entsprechenden Spalten stehen.

Private Sub UserForm_Initialize()
    ' Füge Labels hinzu
    Label1.Caption = "Überschrift 1"
    Label2.Caption = "Überschrift 2"
    ' ...
End Sub

Praktische Beispiele

Hier ist ein Beispielcode, um eine ListBox mit Daten aus einer Excel-Tabelle zu befüllen und die Überschriften korrekt darzustellen:

Private Sub UserForm_Initialize()
    Dim AnzahlZeilen As Long
    Dim Dateiname As String
    Dateiname = frmAkontoImport.boxImport.Value

    AnzahlZeilen = Workbooks(Dateiname).Worksheets(1).UsedRange.Rows.Count

    With ListBox1
        .ColumnCount = 14
        .ColumnHeads = True
        .RowSource = "[" & Dateiname & "]Tabelle1!$A$1:$N$" & AnzahlZeilen
    End With
End Sub

Tipps für Profis

  • Verwendung von RowSource: Achte darauf, dass die Zelladresse im RowSource korrekt ist, insbesondere bei dynamischen Datenbereichen.

  • Fehlerbehebung: Nutze MsgBox, um die generierte RowSource zu überprüfen, bevor du sie an die ListBox übergibst.

  • Automatisierung: Wenn du häufig ähnliche Aufgaben durchführst, erstelle eine Funktion, die diese Schritte automatisiert.


FAQ: Häufige Fragen

1. Kann ich die ListBox formatieren?
Nein, ListBoxes in VBA unterstützen keine direkte Formatierung wie Schriftarten oder Farben. Verwende stattdessen Labels für Überschriften.

2. Wie kann ich die ListBox scrollbar machen, wenn ich viele Daten habe?
ListBoxes sind standardmäßig scrollbar, wenn die Anzahl der Elemente die Größe der ListBox übersteigt. Stelle sicher, dass die ListBox eine geeignete Höhe besitzt.

3. Was passiert, wenn ich die Datenquelle ändere?
Wenn du die Datenquelle änderst, musst du sicherstellen, dass die RowSource und ColumnCount entsprechend aktualisiert werden.

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