Clever-Excel-Forum

Normale Version: Kombinationsfeld mit Namensbereich
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
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
Seiten: 1 2 3