online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon BenjaminM vom 06.05.2022, 17:01 Options

Combobox in Abhängigkeit

Hallo @All,

hab viel probiert aber ich komme mit dem Code nicht klar.

Ich bekomme die beiden Comboboxen nicht in Abhängigkeit.
Habe bestimmt schon 8 vorlagen gefunden, schaffe es aber nicht das auf meine UserForm umzumünzen!

Die Box befüllen krieg ich hin, aber das mit der Abhängigkeit nicht!

Kann sich das mal jemand ansehen und mir das in den VBA basteln?

Hier die Datei

Es soll eine Abhängigkeit von Unterricht zu Lehrer entstehen.
Daten dafür sind in Tabelle Lehrer.
Ich bin geschafft, und bekommen es absolut nicht auf die Reihe.

Danke für eure Hilfe
Benjamin


Antwort schreiben

Antwort 1 von Beverly vom 07.05.2022, 14:47 Options

Hi Benjamin,

damit die Lehrer nicht doppelt eingetragen werden, schreibe diesen Code ins Activate Ereignis des UserForms:
Private Sub UserForm_Activate()
    Dim loZaehler As Long
    Dim varBereich As Variant
    Dim objWerte As Object
    Set objWerte = CreateObject("Scripting.Dictionary")
    With Worksheets("Lehrer")
        varBereich = .Range("B2", .Range("B2").End(xlDown))
    End With
    For loZaehler = LBound(varBereich) To UBound(varBereich)
        objWerte(varBereich(loZaehler, 1)) = 0
    Next
    ComboBox1.List = objWerte.keys
    Set objWerte = Nothing
End Sub

Lösche weiterhin die RowSource in beiden ComboBoxen und schreibe den folgenden Code ins Change Ereignis der ComboBox1:
Private Sub ComboBox1_Change()
    Dim loZeile As Long
    loZeile = 2
    With Worksheets("Lehrer")
        ComboBox2.Clear
        Do
            If .Cells(loZeile, 2) = ComboBox1 Then ComboBox2.AddItem .Cells(loZeile, 1)
            loZeile = loZeile + 1
        Loop While .Cells(loZeile, 1) <> ""
    End With
    ComboBox2.ListIndex = 0
End Sub

Damit werden in Abhängigkeit von der Auswahl des Lehrers in der ComboBox1 die Fächer in ComboBox2 "gefiltert".

Bis später,
Karin

Antwort 2 von BenjaminM vom 10.05.2022, 09:22 Options

Hallo Karin,

Danke für deine Antwort.

Hab das mal eingesetz in meinen Code, doch mir ist jetzt aufgefallen das ich die Combos vertauscht habe.
Es soll erst der Unterricht abgefragt werden und dann der Lehrer dazu wählbar sein!

Da sich die Schüler für einen Unterricht anmelden, und dann erst der Lehrer dazu ausgewählt wird.

Hab das jetzt umgedreht, aber dann lauft es auf einen Fehler.

Könntest du noch mal schauen was ich da falsch mache?
Der Fehler wird angezeigt in dem Combobox1_Change Ereignis, letzte Zeile
"ComboBox2.ListIndex = 0"
ich muss doch den vorhandenen Code ersetzen, oder!?

Hier noch mal die Datei.
Und was für eien Code muss ich nutzen um das dann aus den Combos in die Tabelle "Schuelereintritt" zu übertragen?

Danke für deine Hilfe,
mfG Benjamin

Antwort 3 von Beverly vom 10.05.2022, 10:05 Options

Hi Benjamin,

da dein Tabellenaufbau jetzt ein völlig anderer ist, geht das mit dem bisherigen Code nicht mehr.
Private Sub UserForm_Activate()
    Dim loLetzte As Long
    With Worksheets("Lehrer")
        loLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
        ComboBox1.RowSource = "Lehrer!" & .Range(.Cells(1, 1), .Cells(loLetzte, 1)).Address
    End With
End Sub

Private Sub ComboBox1_Change()
Dim loZaehler As Long
Dim varBereich As Variant
Dim objWerte As Object
Dim inZeile As Integer
inZeile = ComboBox1.ListIndex + 1
Set objWerte = CreateObject("Scripting.Dictionary")
With Worksheets("Lehrer")
varBereich = Application.Transpose(.Range("B" & inZeile & ":" & .Range("B" & inZeile).End(xlToRight).Address))
End With
For loZaehler = LBound(varBereich) To UBound(varBereich)
If varBereich(loZaehler, 1) <> "" Then objWerte(varBereich(loZaehler, 1)) = 0
Next
ComboBox2.List = objWerte.keys
If ComboBox2.ListCount > 0 Then ComboBox2.ListIndex = 0
Set objWerte = Nothing
End Sub

Das Übertragen der Daten machst du genau so wie mit den TextBoxen, nur dass du statt TextBox schreibst ComboBox1 bzw. ComboBox2 und die betreffende Spaltennummer angibst, ich welche der Eintrag erfolgen soll.

Bis später,
Karin

Antwort 4 von BenjaminM vom 10.05.2022, 10:16 Options

Super, danke.

jedoch werden nun leider die Lehrer nicht mehr gefiltert!

Irgendwie stimmt die Zuordnung nun nicht mehr.

Könntest du noch mal schauen?Oder muss ich die Quelle neu Aufstellen?

MfG Benjamin

Antwort 5 von BenjaminM vom 10.05.2022, 10:53 Options

Hallo Karin,

mit den Combos übertragen hab ich auch hinbekommen, (fehler war ich hab im Code CombiBox1 geschrieben ;-))

Nuun taucht aber noch etwas auf!
Der Übertrag funtz, aber trotzdem kommt beim übertrage ein Laufzeitfehler im Code!
Private Sub ComboBox1_Change()
Dim loZaehler As Long
Dim varBereich As Variant
Dim objWerte As Object
Dim inZeile As Integer
inZeile = ComboBox1.ListIndex + 1
Set objWerte = CreateObject("Scripting.Dictionary")
With Worksheets("Lehrer")
varBereich = Application.Transpose(.Range("B" & inZeile & ":" & .Range("B" & inZeile).End(xlToRight).Address))
End With
For loZaehler = LBound(varBereich) To UBound(varBereich)
If varBereich(loZaehler, 1) <> "" Then objWerte(varBereich(loZaehler, 1)) = 0
Next
ComboBox2.List = objWerte.keys
If ComboBox2.ListCount > 0 Then ComboBox2.ListIndex = 0
Set objWerte = Nothing

die Fett gedruckte Zeile wird als Fehler angezeigt.
Was kann das den noch sein?
Sorry für die Vielen Fragen, aber als Newbie ist das echt nicht so einfach!

Danke dir & MfG Benjamin

Antwort 6 von Beverly vom 10.05.2022, 12:11 Options

Hi Benjamin,

da müsstest du deine aktuelle Mappe mit dem übernommenen Code noch mal hochladen - in deiner ursprünglichen Mappe, in der ich den Code getestet habe, kommt dieser Fehler nicht.

Bis später,
Karin

Antwort 7 von BenjaminM vom 10.05.2022, 13:41 Options

Hallo Karin,

hier noch mal die Datei,
mit dem Fehler aus AW5.

MfG Benjamin

Antwort 8 von Beverly vom 10.05.2022, 14:38 Options

Hi Benjamin,

ich habe deine Mappe jetzt heruntergeladen - bei mir kommt dieser Fehler nicht. Welche Excelversion verwendest du?

Bis später,
Karin

Antwort 9 von BenjaminM vom 10.05.2022, 14:48 Options

Hallo Karin,

ich hab excel 2007, allerdings im Kompatibilitäts Modus.
Kann das damit zusammenhängen?

Wäre schön wenn das mit Version 97 auch funtz, den das ist die Version auf der es später auch laufen soll! (bis dann irgendwann das neue drauf kommt)

Gruß Benjamin

Antwort 10 von Beverly vom 10.05.2022, 15:37 Options

Hi Benjamin,

ich habe die Mappe jetzt sowohl in Excel2007 (Kompatibilitätsmodus), Excel2002 und Excel97 getestet - es kommt keine Fehlermeldung. Was sagt denn der Debugger bei dir genau und was wird als Inhalt der Variablen loZeile angegeben, wenn du im VBA-Editor bei angehaltenem Code (ich meine wenn der Code durch den Fehler anhält) darauf gehst?

Bis später,
Karin

Antwort 11 von Beverly vom 10.05.2022, 15:46 Options

Korrektur: ich meinte Variable inZeile nicht loZeile

Bis später,
Karin

Antwort 12 von BenjaminM vom 10.05.2022, 17:05 Options

Hallo Karin,

hab die Datei noch mal neu gestartet und nu gehts! weiß auch nicht was das war!

Vielen Dank!

Benjamin

Antwort 13 von BenjaminM vom 25.05.2022, 14:32 Options

Hallo,
ich hab das Problem nun wieder, wie in AW5!

Kein Plan was das sein könnte.
die Variable ist als "inZeile" und nicht "loZeile" funktioniert aber trotzdem nicht.

Kann mir da einer weiterhelfen?

MfG Benjamin

Ähnliche Themen

Wie füllt man eine Combobox
adii  05.12.2008 - 73 Hits - 10 Antworten

Mit ComboBox in Zelle springen
--dlb--  26.03.2009 - 267 Hits - 2 Antworten

Drop Down Menü mit Abhängigkeit
maxxiii  06.05.2009 - 224 Hits - 4 Antworten

ComboBox Liste wiederholt sich ungewollt
Sina1982  30.08.2009 - 217 Hits - 3 Antworten

ComboBox Dropdown Liste
fedjo  28.11.2009 - 247 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026