Excel Dropdown-liste per Button?

4 Antworten

Jo ist ganz einfach:

Also den Klick auf den Button kannst du dir sparen.

Markiere das Feld oder den Bereich in dem das DropDown sein soll.

Klick im Reiter Daten auf Datenüberprüfung. Wähle im Feld Zulassen "Liste" aus. Bei Quelle wählst du dann die andere Tabelle aus.

Fertig

Fange die Dropdown-Liste mit zwei Eintragen an (kannst Du später auch manuell ändern) [Daten-Datenüberprüfen-nochmal Daten überprüfen usw]

Dann nennst Du den Bereich mit 2 Zellen DroDoLis (oder nach Geschmack anders, aber dann musst Du das Makro unten mehrfach korrigieren!)

jetzt öffnest du mit AltF11 den VBA-Editor. Einfügen-Modul

Dahinein kopierst du dieses µ:

  • Sub DroDoListeErweitern()
  • Dim sel As Range: Set sel = Selection
  • Set sel = Selection
  • sel.Copy
  • Range("DrodoLis").Cells(2).Select
  • Selection.Insert Shift:=xlDown
  • On Error Resume Next
  • Selection.Paste 'ODER, v.a. bei Formeln: die beiden Kursivzeilen streichen und ersetzen durch die folgende EINE Zeile
  • Selection.value = sel.value 'Selection ist jetzt ja die noch leere eingefügte Zelle
  • Range("DrodoLis").Select 'jetzt die ganze Liste zum Sortieren!
  • ActiveWorkbook.Worksheets("Kontakte").Sort.Header = xlNo
  • ActiveWorkbook.Worksheets("Kontakte").Sort.Orientation = xlTopToBottom
  • ActiveWorkbook.Worksheets("Kontakte").Sort.Apply
  • sel.Select 'i.folg. reinigen für Neueintrag:
  • sel.ClearContents 'evtl streichen, wenn e. Formel bleiben soll
  • End Sub


jetzt gehst Du wieder zurück ins Worksheet, setzt den Cursor auf die zu kopierende Stelle und startest das Makro DroDoListeErweitern. (das kannst du natürlich auch einem Knopf oder einer Form zuweisen, ich nehme dafür meist ein Textfeld, das ich auffällig und per Rahmen wie einen Knopf formatiere, aber größer.
Vermutlich könnte man das noch um ein-2 Zeilen kürzen, aber es geht so und ich mag heute nicht mehr da dran schaffen (mir reichts, ich musste auch vieles erst ausprobieren!)

Wenns nicht gehen sollte (bei mir tutets, xl2010), geh bei der Fehlermeldung auf Debuggen und schreibe hier
die kritische Zeile sowie die Fehlermeldung!

Iamiam  01.09.2016, 22:36

wenn Du die Reihenfolge der Werte dokumentiert behalten willst, sparst Du Dir das Sortieren und schreibst stattdessen in die 1. Zelle das Wort Neueste und in die 2.=anfangs letzte Älteste. Die anderen Werte werden dann entsprechend ihrem Einfügezeitpunkt dazwischengesetzt

 Lösche für diesen Fall die Zeilen von Range("DrodoLis").select bis incl. .Sort.Apply (und erzähle mir das ja nicht, das hat mich am meisten Schweiß gekostet... ;)

Du kannst übrigens die DrodoLis mit Werten aus beliebigen Quellen anderswo im Blatt abwechselnd oder durcheinander füllen. Diese Herkunft zu dokumentieren, bräuchte es aber eine weitere Spalte zB neben DrodoList, wäre kein schwieriges Problem, ebenso nicht die Dokumentation des Zeitpunkts, nur zur Info.

Was ich jetzt nicht ausprobiert hab: ob/wie es mit zwei verschiedenen Blättern geht. Aber Du kanns DrodoLis ja weit rechts ansiedeln, so dass es nicht stört.

0

Hallo, soweit kenn ich das auch :). Leider funzt das so nicht, wie ich das brauche. Ich muss in dem Feld Daten eintragen, die dann in der Dropdownliste erscheinen und dass Feld müsste dann gleichzeitig gelöscht werden, so dass ich dort immer wieder weiter Daten eintragen kann und diese alle in der Dropdown-Liste aufgeführt werden. Hoffe ich konnte das verständlich beschreiben.:)

Hallo,

danke schonmal für die ganze Mühe, aber irgendwie bekomme ich leider nicht auf die Pfanne. Ich schick mal ein Bild , um es verständlicher zu erklären.

Auf dem Bild : In der "C" Spalte möchte ich gerne immer Werte eintragen (Datum+Ref.Nr.) Und in der "D" Spalte sollen die dann  in einer Dropdownliste gespeichert werden. :)

 - (Microsoft, Microsoft Excel, Office)