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-ID: 301082

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

Ausgedruckt am: 25.11.2024 um 20:11 Uhr

114757
114757 06.04.2016 aktualisiert um 20:24:46 Uhr
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
AsciWhite
AsciWhite 06.04.2016 aktualisiert um 20:34:36 Uhr
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
114757
114757 06.04.2016 aktualisiert um 20:42:41 Uhr
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.
AsciWhite
AsciWhite 06.04.2016 um 20:46:58 Uhr
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
114757
114757 06.04.2016 aktualisiert um 20:51:39 Uhr
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.
AsciWhite
AsciWhite 06.04.2016 um 21:07:04 Uhr
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
114757
114757 06.04.2016 aktualisiert um 21:22:32 Uhr
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.
MrCount
MrCount 07.04.2016 aktualisiert um 08:19:17 Uhr
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.
AsciWhite
AsciWhite 07.04.2016 um 14:08:50 Uhr
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
114757
114757 07.04.2016 aktualisiert um 16:26:43 Uhr
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
MrCount
MrCount 07.04.2016 aktualisiert um 14:39:47 Uhr
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