Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
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

Befüllen von zweiter ComboBox

Befüllen von zweiter ComboBox
23.11.2019 00:34:06
zweiter
Hallo.
Ich bekomme bei folgenden Code zum Füllen ComboBox 2 in Abhängigkeit von ComboBox 1, die die Werte aus dem Sheet 8 ("Reiseziele") Spalte A bis C
Private Sub cbx_Zielort_Change()
Dim arr As Variant, wks As Worksheet
arr = wks(8).Range("A" & cbx_Zielort.ListIndex + 1, "C" & cbx_Zielort.ListIndex + 1)
cbx_Zielstrasse.Column = arr
End Sub

die Fehlermeldung "Laufzeitfehler 91 - Objektvariable oder WWith-Blockvariable nicht festgelegt"
Was ist falsch?
LG
Peer

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Befüllen von zweiter ComboBox
23.11.2019 01:16:01
zweiter
Wie wäre es mit:
arr = wks(8).Range("A" & cbx_Zielort.ListIndex + 1 & ":C" & cbx_Zielort.ListIndex + 1)

AW: Befüllen von zweiter ComboBox
23.11.2019 11:28:02
zweiter
Selber Fehler, onur
AW: Befüllen von zweiter ComboBox
23.11.2019 08:04:19
zweiter
Hallo Peer,
wo und wie wird wks initialisiert?
Gruß
Nepumuk
AW: Befüllen von zweiter ComboBox
23.11.2019 11:30:06
zweiter
Hallo Nepumuk.
Ich dachte mit "wks as Worksheet" deklariere ich die Variable und spreche die Bestimmte mit 8 oder "Reiseziele" an?
Gruß
Peer
AW: Befüllen von zweiter ComboBox
23.11.2019 11:41:27
zweiter
Hallo Peer,
damit hast du eine Objektvariable ohne Objekt. Sie hat also den Wert Nothing, daher der Fehler.
Gruß
Nepumuk
AW: Befüllen von zweiter ComboBox
23.11.2019 11:51:29
zweiter
Hallo Nepumuk.
Das bedeutet für einen Laien? Muss ich wks noch mit Set das Sheet(8) zuordnen?
Gruß
Peer
Anzeige
AW: Befüllen von zweiter ComboBox
23.11.2019 12:04:08
zweiter
Hallo Peer,
ja, wobei bei einmaliger Verwendung eine Variable keinen Sinn macht. Warum nicht einfach:
Private Sub cbx_Zielort_Change()
    cbx_Zielstrasse.Column = Worksheets("Reiseziele").Cells( _
        1, cbx_Zielort.ListIndex + 1).Resize(1, 3).Value
End Sub

Gruß
Nepumuk
Anzeige
AW: Befüllen von zweiter ComboBox
23.11.2019 12:14:24
zweiter
Hallo Nepumuk.
Kommt Fehler "1004 - Anwendungs- oder objektdefinierter Fehler".
Ich hatte im Web eine Variante entdeckt und wollte sie ausprobieren und dadurch vielleicht verstehen.
Ich habe sie ein wenig anpassen wollen.
Meinst du so?

Private Sub cbx_Zielort_Change()
'Dim arr As Variant, wks As Worksheet
Set wks = ActiveWorkbook.Worksheets("Reiseziele")
arr = wks.Range("A" & cbx_Zielort.ListIndex + 1 & ":C" & cbx_Zielort.ListIndex + 1)
cbx_Zielstrasse.Column = arr
End Sub

Funktioniert trotzdem nicht
Gruß
Peer
Anzeige
AW: Befüllen von zweiter ComboBox
23.11.2019 12:27:44
zweiter
Hallo Peer,
im Prinzip ja.
Gruß
Nepumuk
AW: Befüllen von zweiter ComboBox
23.11.2019 12:50:31
zweiter
Hallo Nepumuk.
im Prinzip ja.
?
Ich habe es noch ein wenig ändern wollen.

Set wks = Worksheets("Reiseziele")
arr = wks.Cells(1, cbx_Zielort.ListIndex + 1).Resize(1, 3).Value
cbx_Zielstrasse.Column = arr

Funktioniert auch nicht. Selber Fehler.
Was ist falsch?
LG
Peer
AW: Befüllen von zweiter ComboBox
23.11.2019 14:27:16
zweiter
Hallo Peer,
kann ich nicht nachvollziehen.
Gruß
Nepumuk
AW: Befüllen von zweiter ComboBox
23.11.2019 14:34:23
zweiter
Moin!
Schau mal, welchen listindex du bei der Codeausführung hast. (also den hier: cbx_Zielort.ListIndex).
Hast du nix ausgewählt oder irgendwas ist schief gelaufen, steht der auf -1. Mit deinem +1 im Cells, kommst du aber für die Spalte nur auf 0. Die gibt es nicht. Wenn das aber da steht, gibt Excel (zumindest mein 2010) auch den Fehler 1004 aus.
VG
Anzeige
AW: Befüllen von zweiter ComboBox
23.11.2019 19:20:52
zweiter
Hallo Matthias.
Sorry für die späte Antwort.
Was soll ich nun in meinem Code verändern? Ich habe den ListIndex auf -1 gelegt, aber es bleibt dabei.
LG
Peer
AW: Befüllen von zweiter ComboBox
23.11.2019 20:33:59
zweiter
Moin!
Nein, das ist jetzt glaube ich ein Verständnisproblem. Deine Combobox gibt einen Listindex zurück, der angibt, was angeklickt ist. Die 1. Zeile hat dabei den Wert 0. Der WErt -1 steht für nix angeklickt. Danach solltest du am Anfang auswerten.
Könnte in deinem Code so aussehen. Einfach mal austauschen und damit testen:
Private Sub cbx_Zielort_Change()
'Befülle ComboBox "Zielstrasse" gefiltert nach Eintrag aus ComboBox "Zielort"
Dim arr As Variant, wks As Worksheet
Set wks = Worksheets("Reiseziele")
If cbx_Zielort.ListIndex = -1 Then
MsgBox "Es wurde nichts ausgewählt!"
Exit Sub
Else
arr = wks.Cells(1, cbx_Zielort.ListIndex + 1).Resize(1, 3).Value
cbx_Zielstrasse.Column = arr
End If
'    cbx_Zielstrasse.Column = Worksheets("Reiseziele").Cells(1, cbx_Zielort.ListIndex + 1). _
Resize(1, 3).Value
End Sub

VG
Anzeige
AW: Befüllen von zweiter ComboBox
23.11.2019 21:29:01
zweiter
Hallo Markus.
Ich bekomme zwar jetzt keine Fehlermeldung mehr, aber die Lösung mit den beiden ComboBoxes ist es nicht, denn die Abhängigkeit ist jetzt verwirrend.
Siehe selbst...
https://www.herber.de/bbs/user/133393.xlsm
Gruß
Peer
AW: Befüllen von zweiter ComboBox
24.11.2019 11:19:33
zweiter
Moin!
Das mit dem Testen ist so ein Problem. Deine UF Tag löst bei mir einen Fehler aus. Ohne die UF geht es, dann kann man aber nicht testen.
Aber wenigstens kannst du jetzt den Fehler schonmal eingrenzen. :-)
Was mir gestern Abend noch auffiel. Ich glaube, dass du in deinem Array die Zeile und Spalte vertauscht hast. Du willst ja vom angeklickten Eintrag in der Combobox die entsprechenden 3 Spalten (PLZ, Ort und Straße) aufgelistet haben. Dann muss aber dein listindex bei Cells als erster Parameter laufen. So hier würde der Code nun von der Auswahl die Spalten daneben anzeigen.
arr = wks.Cells(cbx_Zielort.ListIndex + 1, 1).Resize(1, 3).Value

Aber mal als Frage. Auch bei der Ausführung hast du in Straße dann sowohl die PLZ als auch den Ort und nicht nur die Straßen. ISt das so gewollt? Wenn nicht, erklär mal bitte, was dann angezeigt werden soll.
VG
Anzeige
AW: Befüllen von zweiter ComboBox
24.11.2019 13:33:26
zweiter
Hallo Matthias.
Die UF öffnet sich bei Doppelklick auf Spalte B2:B42. Sie soll jedenfalls. Aber ab und zu lässt sie den Doppelklick nicht zu und selektiert die Zelle. Scheinbar läuft danach noch der VB-Editor. Nun durch beenden des Excel-Files und erneuten Öffnen ist wieder alles wie vorgesehen.
Wie du in dem UF kannst, gibt es die beiden Comboboxen, wo die erste Box die Daten aus "Reiseziele" A:B holt. Dabei sollen doppelte Werte ausgeblendet werden. Die zweite Box soll abhängig vom Wert in Box 1 die Spalte C aus "Reiseziele" hinzunehmen.
Aktuell sind die Werte in Box 2 verwirrend durcheinander und scheinbar nicht miteinander mit Box 1 "verknüpft".
LG
Peer
Anzeige
AW: Befüllen von zweiter ComboBox
24.11.2019 18:29:37
zweiter
Moin!
Wie gesagt, kann deine UF_Tag nicht testen, da sie bei mir einen Speicherfehler auslöst. Habe sie deshalb aus der Datei gelöscht. Kann deshalb nicht den genauen Ablauf darstellen. Meine selbst gebastelte UF hat deshalb nur 2 CB mit deinen Namen. Mit dem Code hier, werden beim Anklicken die Werte aus der entsprechenden Zeile eingetragen. Allerdings halt PLZ, Ort und Straße (wäre da nicht nur die Straße relevan?). Sollte glaube ich so sein, wie du wolltest.
Private Sub cbx_Zielort_click()
'Befülle ComboBox "Zielstrasse" gefiltert nach Eintrag aus ComboBox "Zielort"
Dim arr As Variant, wks As Worksheet
Set wks = Worksheets("Reiseziele")
If cbx_Zielort.ListIndex > -1 Then
arr = wks.Cells(cbx_Zielort.ListIndex + 1, 1).Resize(1, 3).Value
cbx_Zielstrasse.Column = arr
End If
'    cbx_Zielstrasse.Column = Worksheets("Reiseziele").Cells(1, cbx_Zielort.ListIndex + 1). _
Resize(1, 3).Value
End Sub
Wobei deine DAten in CB_Zielort nicht auf doppelte geprüft werden. Da wäre auch die Frage, was soll passieren, wenn Spalte A und B gleich sind aber C unterschiedlich? Gehe aber davon aus, dass deine Ausgangsdaten da keine Doppelungen haben.
Du könntst mal deine UF_Tag exportierne und in einer blanken Mappe hier einstellen, wenn es das noch nicht war. Dann könnte ich die einpflegen und schauen, was anders läuft.
VG
Anzeige
AW: Befüllen von zweiter ComboBox
24.11.2019 19:20:03
zweiter
Hallo Matthias.
Vielen Dank für deine Hilfe.
Du kannst anhand der Tabelle "Reiseziele" erkennen, dass doppelte Daten nicht vorkommen (sollten). Daran arbeite ich später.
Vielleicht wäre bei deiner Frage (Anfrage) ein Art Listenfeld mit einer Suchroutine die Lösung. Dann kann man alles Ziele auflisten und fehlende einpflegen oder überflüssige löschen.
Übringens, dein geposteter Code brachte keine Änderung.
https://www.herber.de/bbs/user/133410.xlsm
LG aus Hannover (Tagung)
Peer
AW: Befüllen von zweiter ComboBox
24.11.2019 20:53:38
zweiter
Moin!
Kann auch in der Datei die UF nicht öffnen. Kann vllt. sein, dass mein Ex eines der Elemente nicht kennt / erkennt. Anderseits, weiß ich aber auch nicht, was die Anzeige anders anzeigen soll.
Hier mal meine Testdatei. ISt dein Original ohne UF_Tag. Dafür ist eine Userform1 dabei. Auf der sind zwei Comboboxen, die vom Namen mit dem Code identisch sind. Da ist mein Code von vorhin mit drin.
Wenn du nun einen der Eintragungen in der CB1 anklickst, werden die entsprechenden 3 Werte aus dem Blatt Reiseziele in der CB2 angezeigt (allerdings untereinander). Kannst ja mal testen. Wenn das nicht das Ziel war, bitte mal erklären, was dafür in CB2 angezeigt werden soll ( bspw. Günzburg anklicken dann sollte in CB2 stehen ... )
https://www.herber.de/bbs/user/133414.xlsm
VG
Anzeige
AW: Befüllen von zweiter ComboBox
24.11.2019 21:19:44
zweiter
Hallo Markus.
Selbes Problem.
Erste Box richtig mit den Spalten A und B aus "Reiseziele", aber bei Auswahl in Box 1 in Box 2 die Werte von den jeweiligen Zeile aus "Reiseziele".
Userbild
LG
Peer
AW: Befüllen von zweiter ComboBox
25.11.2019 18:45:30
zweiter
Moin!
Ich vermute mal, du möchtest die Werte als Zeile und nicht als Spalte haben.
DAnn wäre es besser, du weist die Daten an die List-Eigenschaft und nicht an die Column-Eigenschaft.
Hatte das bisher aber gelassen, da du es ja schon explizit so hattest. Die CBX nur auf 3 spaltig einstellen und den Code so abänder.
cbx_Zielstrasse.List = arr

VG
AW: Befüllen von zweiter ComboBox
25.11.2019 21:05:03
zweiter
Danke Markus. Das war's.
Hier nochmal die korrigierte Code...
Private Sub cbx_Zielort_click()
'Befülle ComboBox "Zielstrasse" gefiltert nach Eintrag aus ComboBox "Zielort"
Dim arr As Variant, wks As Worksheet
Set wks = Worksheets("Reiseziele")
If cbx_Zielort.ListIndex > -1 Then
arr = wks.Cells(cbx_Zielort.ListIndex + 1, 3).Resize(1, 3).Value
cbx_Zielstrasse.List = arr
End If
End Sub
LG
Peer
AW: Befüllen von zweiter ComboBox
23.11.2019 19:51:55
zweiter
Hallo Nepumuk.
Entschuldige die späte Antwort.
Ich musst erst mal vom PC weg, um einen klaren Kopf zu bekommen.
Ich kann es auch nicht verstehen.
Vielleicht sende ich mal die Beispiel Datei.
https://www.herber.de/bbs/user/133392.xlsm
LG
Peer

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige