Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ListBox Werte nacheinander auslesen

ListBox Werte nacheinander auslesen
02.02.2021 14:35:16
Steff
Hallo zusammen,
vielen Dank für die Aufnahme. Grundsätzlich bin ich kein Neuling in Excel VBA und kann mir häufig mit euren Beiträgen helfen. Leider komme ich aktuell nicht weiter und ich glaube, dass die Lösung hier im Schwarmwissen liegt! (Suche hat nicht geholfen)
Ich möchte selektierte Werte (Mehrfachauswahl möglich) einer Listbox, die auf einem _ Tabellenblatt liegt, auslesen und direkt weiterverwenden, sodass bspw. die selektierten Werte 1,2,3 in einem Word Dokument mit einer Schleife weiterverarbeitet werden können. Der Code hierfür liegt in einem Modul ab und lautet wie folgt:

Sub ...()
On Error Resume Next
If Range("xx").Value = True Then
'Listboxauswahl definieren und in Textmarken einfügen
With Sheets("Eingabe").lbzusSB
For ii = 0 To .ListCount - 1
If .Selected(ii) = True Then
'X steht für Selektion der Listbox
X = .List(ii, 0)
wdDoc.Bookmarks("x" & X).Range.InsertAfter Range("xx").Value
wdDoc.Bookmarks("xy" & X).Range.InsertAfter Range("xy").Value
wdDoc.Bookmarks("xyz" & X & "Einzel").Range.InsertAfter Range("xyz").Value
End If
Next
End With
Else: End If
End Sub

Er gibt mir die selektierten Werte der Listbox aber nicht zurück, sondern sagt: lbzusSB = nothing oder null. Ich vermute es liegt an den Deklarationen bzw. dass die Listbox auf dem Tabellenblatt liegt und ich diese aus einem Modul aufrufen möchte. Wie müsste ich hier die OLEObjekte für das Tabellenblatt setzen, damit er die selektierten Werte erkennt?
Vielen Dank für die Unterstützung!
p.s. wenn ich den Code über eine Userform mit integrierter Listbox laufen lasse, klappt alles wunderbar.

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

Betreff
Datum
Anwender
Anzeige
AW: ListBox Werte nacheinander auslesen
02.02.2021 15:07:57
Nepumuk
Hallo Steff,
eigentlich sollte das funktionieren. Bekommst du eine Fehlermeldung?
Gruß
Nepumuk
AW: ListBox Werte nacheinander auslesen
02.02.2021 15:35:36
Steff
Hallo Nepumuk,
nein, keine Fehlermeldung. Ich erhalte jedoch nicht die zu erwartenden Werte und er geht auch nicht in die Schleife, obwohl ich bspw. 3 Werte ausgewählt habe. Beispiel: Ich wähle in der Listbox in dem Tabellenblatt die Werte 1, 2 und 3. Dann soll in der ersten Iteration in Word xx1, xy1 und xyz1 stehen, für die zweite xx2, xy2 und xyz2 usw.. Im Durchlauf gibt er mir aber nur eine 0 als Wert und beendet die Schleife direkt danach, obwohl noch 26 weitere Einträge auf selected überprüft werden müssten. Deswegen ist meine Vermutung, dass die Struktur mich dazu zwingt richtig zu deklarieren.
Struktur: ListBox (ActiveX) liegt auf Tabellenblatt. Makro wird über Modul gestartet und benötigt whrs. ein DIM und SET für ein OLEObject, oder? Und hier weiß ich leider nicht genau, wie das richtig formuliert wird.
Vielleicht als Ansatz?
Dim lbzusSB As OLEObject
Set lbzusSB = ThisWorkbook.Worksheets("Eingabe").OLEObject
Anzeige
AW: ListBox Werte nacheinander auslesen
02.02.2021 15:38:39
Nepumuk
Hallo Steff,
kommentiere mal die On Error - Anweisung aus und schreib was passiert.
Gruß
Nepumuk
AW: ListBox Werte nacheinander auslesen
02.02.2021 16:03:55
Steff
Hallo Nepumuk,
guter Hinweis, so kann man natürlich keine Fehlermeldung erhalten. Jetzt erhalte ich:
"Laufzeitfehler 438: Objekt unterstützt diese Eigenschaft oder Methode nicht".
Grüße
Steff
AW: ListBox Werte nacheinander auslesen
02.02.2021 16:09:44
Nepumuk
Hallo Steff,
in dieser Zeile?
With Sheets("Eingabe").lbzusSB

Gruß
Nepumuk
AW: ListBox Werte nacheinander auslesen
02.02.2021 16:17:35
Steff
... Sorry, ja in dieser Zeile. Deswegen glaube ich, dass Excel noch nicht erkannt hat, dass es sich um eine Listbox mit Einträgen handelt, die auf select geprüft werden müssen, weil die Listbox in der Tabelle liegt und als Object deklariert werden müsste. Oder bin ich auf dem Holzweg?
Grüße
Anzeige
AW: ListBox Werte nacheinander auslesen
02.02.2021 16:20:08
Nepumuk
Hallo Steff,
dann stimmt der Name der Listbox in deinem Code nicht.
Gruß
Nepumuk
AW: ListBox Werte nacheinander auslesen
02.02.2021 16:45:02
Steff
Hi,
der Name des ActiveX Steuerelements ist als exakt dieser angegeben. Ich muss zugeben, dass der Code unter einer Userform sauber durchläuft. Ich muss doch eigentlich in einem Sub über Dim das OLEObject zuweisen, oder? Das habe ich hier noch nicht gemacht, weil ich nicht sicher bin wie die Syntax lautet. Weißt du erstmal, wie man das Sub starten muss, damit Excel die Listbox auch als Listbox mit Inhalten erkennt? Wie gesagt:
ActiveX Steuerelement auf Tabellenblatt mit dem Namen lbzusSB mit Werten gefühlt. Die Box lässt eine Mehrfachauswahl zu.
Danke.
Grüße
Anzeige
AW: ListBox Werte nacheinander auslesen
02.02.2021 16:53:48
Nepumuk
Hallo Steff,
benutze mal an Stelle von Sheets("Eingabe") den Objektname der Tabelle. Das ist der Name den du im Projektexplorer vor den in Klammern stehenden Namen "Eingabe" findest. So wie hier in meinem Beispiel Tabelle1:
Userbild
Also z.B. Tabelle1.lbzusSB wobei du den Listboxnamen nicht kopierst sondern ihn eingibst. So bekommst du den richtigen Namen automatisch.
Gruß
Nepumuk
AW: ListBox Werte nacheinander auslesen
02.02.2021 17:03:31
Steff
Hallo nepumuk,
das habe ich bereits probiert. An dieser Stelle nochmal der wichtige Hinweis. Der Sub steht in einem Modul, nicht unter Microsoft Excel Objekte. Ich benötige den Sub in dem Modul, um die Übersicht zu behalten :). In dem Modul ist dann doch eigentlich vorgesehen die Listbox mit OLEObject (vielleicht auch mit was anderem) richtig zu deklarieren, damit er sie ganz normal erkennt, oder? Leider fehlt mir hier die richtige Syntax.
Grüße
Anzeige
AW: ListBox Werte nacheinander auslesen
02.02.2021 17:15:13
Nepumuk
Hallo Steff,
nochmal, das muss funktionieren auch in einem Standardmodul. Also, gib den Objektnamen der Tabelle ein, einen . dahinter und dann ein L da muss der Name der Listbox automatisch kommen denn eine Tabelle hat keine Eigenschaft oder Methode die mit L beginnt. Glaub mir das, ich programmieren in VBA schon 25 Jahre.
Gruß
Nepumuk
AW: ListBox Werte nacheinander auslesen
03.02.2021 07:06:07
Steff
Guten Morgen Nepumuk,
danke für die geduldige Hilfe. Tatsächlich hat es so funktioniert. Gibt es dafür eine Erklärung, denn wenn ich über "worksheets("Eingabe").lbzusSB" in die Auswahl gegangen bin, hat er es nicht erkannt?! Gern poste ich aber hier nochmal den Code inkl. Fettschrift der Lösung!
Sub ...()
On Error Resume Next
If Range("xx").Value = True Then
'Listboxauswahl definieren und in Textmarken einfügen
With Tabelle1.lbzusSB 'hier mit direkter Zuweisung zur Tabelle, wo die Listbox liegt
For ii = 0 To .ListCount - 1
If .Selected(ii) = True Then
'X steht für Selektion
X = .List(ii, 0)
wdDoc.Bookmarks("xx" & X).Range.InsertAfter Range("xx").Value
wdDoc.Bookmarks("xy" & X).Range.InsertAfter Range("xy").Value
wdDoc.Bookmarks("xyz" & X & "Einzel").Range.InsertAfter Range("xyz").Value
End If
Next
End With
Else: End If
End Sub
Danke und einen guten Start in den Tag.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige