asciwhite
Goto Top

Excel 2010 vba mehrspaltige listbox

Hallo,
ich versuche Daten aus einer Access-Datei in eine ListBox auf einer Userform einzulesen.
Dazu habe ich die ListBox zum Anzeigen der ColumnHeads umgestellt und Daten einlesen klappt auch.
Leider kriege ich einen Text in den Kopf-Bereich der jeweiligen Spalte.

Welche Möglichkeiten gibt es dafür?

Gruß

Content-Key: 301082

Url: https://administrator.de/contentid/301082

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 114757
114757 Apr 06, 2016 updated at 18:24:46 (UTC)
Goto Top
Moin.
Zitat von @AsciWhite:
Dazu habe ich die ListBox zum Anzeigen der ColumnHeads umgestellt und Daten einlesen klappt auch.
OK
Leider kriege ich einen Text in den Kopf-Bereich der jeweiligen Spalte.
?? Hmm, was meinst du mit einen Text?
Welche Möglichkeiten gibt es dafür?
Wenn man weiß was du vorhast können wir dir helfen face-smile

More details please....

Gruß jodel32
Member: AsciWhite
AsciWhite Apr 06, 2016 updated at 18:34:36 (UTC)
Goto Top
listbox
so schaut das ganze aus. und nun möchte ich einfach einen Text, zb. Spalte1 ... Spalte2 usw. in diese Kopfzeile einfügen.

Gruss
Mitglied: 114757
114757 Apr 06, 2016 updated at 18:42:41 (UTC)
Goto Top
Gib einfach die RowSource Eigenschaft der Listbox an, dann wird automatisch die erste Zeile des Bereichs den du angibst in die Überschriften übernommen.
Member: AsciWhite
AsciWhite Apr 06, 2016 at 18:46:58 (UTC)
Goto Top
Ja das habe ich schon versucht, aber ich finde nur Beispiele mit RowSource und einem Range-Zell Bezug.
Da meine Daten aber aus einem ADODB-Recordset kommen klappt das nicht oder hast du da ein kontretes Beispiel?
Gruss
Mitglied: 114757
114757 Apr 06, 2016 updated at 18:51:39 (UTC)
Goto Top
Dann lad dein Recordset in ein Sheet kombiniere es mit deinen Überschriften und setze die RowSource auf den belegten Range. Der lässt sich ja z.B. einfach mit
Range("A1").CurrentRegion.Address
ermitteln.
Member: AsciWhite
AsciWhite Apr 06, 2016 at 19:07:04 (UTC)
Goto Top
hmm, wäre sicher eine Möglichkeit, aber doch schon recht "dirty". Es muss doch auch eine Methode geben wie man diese Sache sauber über VBA löst.
In Visual Studio gibts für sowas ein schönes DataView und DataGrid Steuerelement, aber hier im Excel-VBA ist die Werkzeugsammlung seeeeeehr überschaubar. Zusätzliche Steuerelemente, die man hinzufügen kann sind auch recht dürftig. Außerdem muss man da ja wieder aufpassen, dass diese auch auf einem Zielsystem existieren, wenn man das Tool weitergibt.
Gruss
Mitglied: 114757
114757 Apr 06, 2016 updated at 19:22:32 (UTC)
Goto Top
Deswegen ist die Listbox für mich persönlich in dieser Hinsicht ja auch ein NOGO.
Dann doch lieber gleich mit Visual Studio ein richtiges Plugin schreiben anstatt diese vollkommen veralteten Tools zu nutzen.
Gerade auch weil VBA-Code in Zeiten von Locky und Ransomware immer unbeliebter wird. Für eine Weiterverteilung weitere Gründe langsam aber sicher umzuschwenken.
Member: MrCount
MrCount Apr 07, 2016 updated at 06:19:17 (UTC)
Goto Top
nun möchte ich einfach einen Text, zb. Spalte1 ... Spalte2 usw. in diese Kopfzeile einfügen.

Einfach einen Text einfügen geht mit AddItem:

ListBox1.AddItem "Spalte1"  
ListBox1.List(0, 1) = "Spalte2"  
ListBox1.List(0, 2) = "Spalte3"  
...
usw.

Schau dir AddItem mal genauer an.
Member: AsciWhite
AsciWhite Apr 07, 2016 at 12:08:50 (UTC)
Goto Top
Hallo MrCount,
danke für deinen Beitrag, aber hast du deinen Vorschlag mal getestet oder "müsste das einfach so sein" ? Das habe ich nämlich auch schon probiert und dabei kommt das hier raus:

listbox2

Wie du siehst kommt der Text als Item an und nicht im Kopf der Tabelle ;)

Update: das mit der Exceldatei habe ich übrigens auch probiert und da klappt es zwar mit RowSource = Range("A1").CurrentRegion.Address
aber in den Spaltenköpfen kommt genau so wenig an ....

Bin nach wie vor für weitere Vorschläge dankbar.
Gruss
Mitglied: 114757
114757 Apr 07, 2016 updated at 14:26:43 (UTC)
Goto Top
Da war ich etwas unpräzise, man muss den Bereich unterhalb der Überschriften als Quelle definieren, dann wird die Zeile über dem Bereich als Überschriftenzeile genutzt.

Hier der BeispielCode für einen dreispaltigen Bereich bei dem die Überschriften in Zeile 1 stehen und die Daten ab Zeile 2
Private Sub UserForm_Initialize()
    ListBox1.RowSource = Range("A2:C" & Range("A2").CurrentRegion.SpecialCells(xlCellTypeLastCell).Row).Address  
End Sub
Member: MrCount
MrCount Apr 07, 2016 updated at 12:39:47 (UTC)
Goto Top
With ListBox1
    .ColumnCount = 3
    .RowSource = "Tabelle1!A2:C2"  
End With

Hier wird die erste Zeile als ColumnHead genommen.

2016_04_07_14_37_29_mappe1_excel