Hallo zusammen,
ich hab mal wieder ein Problem das ich trotz Internetrecherche nicht lösen kann:
Ich habe ein Kombinationsfeld das ich gerne mit dem bereits definierten Namensbereich "Kunde_Lieferant" als ListFillRange befüllen würde. Wenn ich das ganze bei den Eigenschaften eingebe mit ListFillRange =Kunde_Lieferant wird das Eigenschaftsfeld gelöscht und eine Auswahl ist nicht möglich.
Auch ein Code aus dem Internet
Private Sub ComboBox1_Change()
ComboBox1.RowSource = "=Kunde_Lieferant"
End Sub
half mir nicht weiter.
Wie schaffe ich es das mir das Kombinationsfeld nur die eingetragenen Werte aus dem Namensbereich anzeigt? Optimal wäre es wenn es mir auch noch doppelte Werte rausfiltern würde.
Vielen Dank für eure Hilfe!
Schöne Grüße Thomas
Klappt bei mir sehr gut ^^
Code:
Private Sub ComboBox1_DropButtonClick()
ActiveSheet.Range("$B$5:$B$9").RemoveDuplicates Columns:=1, Header:=xlNo
ComboBox1.RowSource = "=Kunde_Lieferant"
End Sub
Doppelte Einträge würde ich vorher löschen!
EDIT: Oben im Code mit drin
Das kann man natürlich noch dynamisch machen, aber das machst du bestimmt alleine ^^
Hallo Basisa,
danke für deine Hilfe, aber ich bekomme leider eine Fehlermeldung:
Laufzeitfehler 438 : Objekt unterstützt diese Eigenschaft oder Methode nicht
und die Zeile ComboBox23.RowSource = "=Kunde_Lieferant" wird markiert.
Den dynamischen Namensbereich glaub ich krieg ich hin =Bereich.verschieben usw. oder?
Vielen Dank
Thomas
Hallo Thomas,
eigentlich regelt man das beim Activate oder Initialize der Userform.
z.B:
Code:
Private Sub UserForm_Activate()
ComboBox1.RowSource = "=Kunde_Lieferant"
End Sub
sonst könntest Du das Enter Ereignis der Combobox nehmen:
Code:
Private Sub ComboBox1_Enter()
ComboBox1.RowSource = "=Kunde_Lieferant"
End Sub
Ich persönlich nutze lieber die List Eigenschaft statt RowSource, das ginge so:
Code:
Private Sub UserForm_Activate()
ComboBox1.List = Range("Kunde_Lieferant").Value
End Sub
Das mit den Duplikaten habe ich übersehen.
Das muss noch extra eingearbeitet werden.
Im Grunde dürften aber in der Lieferantenliste, wenn sie eine Auflistung der Lieferanten ist, keine Duplikte enthalten sein. Dann ist die Liste nicht richtig aufgebaut.
Hallo attila,
ich glaub ich stehe heute voll auf dem Schlauch...
Ich hab meine Datei mal hochgeladen.
Ich habe für meine Inventur ein "Erfassung"arbeitsblatt erstellt welches mir die Daten in das "Umsätze"arbeitsblatt überträgt. In der Erfassung will ich mit dem Kombinationsfeld bei Kunde_Lieferant mir die Namen aus der Umsatzliste holen die bereits eingetragen sind. Diese können vielfach vorkommen.
Was mache ich falsch?
Ich würde auch das hier bevorzugen:
Code:
Private Sub UserForm_Activate()
ActiveSheet.Range("$B$5:$B$100").RemoveDuplicates Columns:=1, Header:=xlNo ' das hier löscht die Duplikate vorher
ComboBox1.List = Range("Kunde_Lieferant").Value ' trägt die Liste ein
End Sub
Wollte das ja mal probieren was er oben im Internet gefunden hat ^^
Dynamisch würde ich mit Cells(?, ?) machen
Vorher abfragen wie Groß deine Liste ist wenn Sie denn immer wächst etc.
Länge der Liste: Range("A65000").End(xlUp).Row
SIEHE ANHANG
Du hast dort keine UserForm...
Benutze:
Code:
Private Sub ComboBox23_GotFocus()
Hallo Thomas,
da hast Du mich aber in die Irre geführt.
Zuerst wollte ich Dir ein Beispiel für eine Combo in der Tebelle zeigen, da sehe ich Rowsource in Deinem ersten Post.
Das gibt es aber nur in Combos auf Userformen.
Also bei Dir muss es anders ablaufen.
Dann ginge folgendes:
Code:
Private Sub ComboBox23_DropButtonClick()
ComboBox23.ListFillRange = "=Kunde_Lieferant"
End Sub
Aber mit Duplikaten muss das ganz anders ablaufen und ich würde die Liste beim öffnen der Datei oder aktivieren der Tabelle einlesen
Hallo Basisa,
danke für den Hinweis, ich sag ja ich steh auf dem Schlauch...
Jetzt bringt er mir aber immer noch folgenden Fehler : Laufzeitfehler 1004 Die Methode Range für das Objekt Worksheet ist fehlgeschlagen.
Ich habe den Code unter Tabelle 1 Erfassung eingegeben, liegt hier der Fehler?
Schöne Grüße
Thomas
Oder so:
Code:
Private Sub ComboBox23_GotFocus()
ComboBox23.List = Worksheets("Umsätze").Range("Kunde_Lieferant").Value
End Sub
Nur die Doppelten sollen bestimmt stehen bleiben und nur nicht in der Box angezeigt werden oder xD
EDIT
Code:
ComboBox23.ListFillRange = "=Kunde_Lieferant"
Wieder was gelernt, sehr schönes Methode... gefällt mir gut... danke atilla