Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Dynamisches Dropdown-Menü gestalten
#1
Hallo,
ich möchte für eine Tabelle ein Dropdown-Menü erstellen mit VBA, welches sich dynamisch an die verschiedenen Elemente anpasst.
Es ist so gedacht, dass Benutzer in einem anderen Tabellenblatt ihre gewünschten Elementen eintragen können und aufbauend darauf sich auch die Möglichkeiten bei der Auswahl im Dropdown-Menü ändern sollen.


Mit dem Makrorekorder habe ich folgende Lösung erhalten:
Code:
Sub Potential()
'
' Potential Makro
'

'
   Application.CutCopyMode = False
   With Selection.Validation
       .Delete
       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
       xlBetween, Formula1:="=Parameter!$A$19:$A$36"
       .IgnoreBlank = False
       .InCellDropdown = True
       .InputTitle = ""
       .ErrorTitle = ""
       .InputMessage = ""
       .ErrorMessage = ""
       .ShowInput = True
       .ShowError = True
   End With
End Sub
Dabei habe ich neben den gefüllten Zellen auch ungefüllte markiert, sodass diese beim späteren nachtragen auch mit berücksichtigt werden. Jedoch bekomme ich im Dropdown-Menü folglich auch leere Felder zur Auswahl angezeigt. Mir fallen spontan zwei Ideen ein:

1) Kann man für das Dropdown-Menü definieren, dass nur gefüllte Zellen in einem Bereich berücksichtigt werden.
2) Ist es sinnvoller mit einer Schleife einen Bereich zu druchlaufen und auf Inhalt zu prüfen?

Bin über jede Hilfe dankbar :)
Antworten Top
#2
Wenn die Daten alle in einer Arbeitsmappe sind, könnte man mit Indirekt() und Zählenwenn() arbeiten um den Bereich mit den Daten zu ermitteln! Oder man wandelt den Bereich in eine intelligente Tabelle um gibt dem Bereich einen Namen und verknüpft die Tabelle mit dem Dropdown
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#3
Hallo,  danke schonmal für deine Hilfe.

Ich wollte nun den durch den Makrorekorder aufgenommenen Code ändern, indem ich die absoluten Zellen durch einen Verweis auf meine Tabelle ersetze. Der Name der Tabelle ist "Tabelle1":
Code:
Sub Potential()
'
' Potential Makro
'

'
   With Selection.Validation
       .Delete
       .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
       xlBetween, Formula1:="=Parameter!$A$20:$A$26"
       .IgnoreBlank = True
       .InCellDropdown = True
       .InputTitle = ""
       .ErrorTitle = ""
       .InputMessage = ""
       .ErrorMessage = ""
       .ShowInput = True
       .ShowError = True
   End With
End Sub

xlBetween, Formula1:="=Parameter!$A$20:$A$26" wollte ich durch
xlBetween, Formula1:="=Parameter!Tabelle1" ersetzen, jedoch erhalte ich dann in der Zeile eine Fehlermeldung. Hättest du eine Idee für das Problem?
Danke :)
Antworten Top
#4
Hallo,

(09.07.2018, 07:38)JonasRe schrieb: Ich wollte nun den durch den Makrorekorder aufgenommenen Code ändern, indem ich die absoluten Zellen durch einen Verweis auf meine Tabelle ersetze. Der Name der Tabelle ist "Tabelle1":

Wenn ich deinen Code anschaue, heißt die Tabelle aber Parameter.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Moin!
"old fashioned" per dynamischem Namen:
Deine Liste:
A
1Aal
2Barsch
3Dorsch

Formeln, Namensmanager, Neu
Name: Meine_Liste
Bezieht sich auf: =Tabelle1!$A$1:INDEX(Tabelle1!$A:$A;ANZAHL2(Tabelle1!$A:$A))

In der Datenüberprüfung:
Zulassen: Liste
Bezieht sich auf: =Meine_Liste

ergibt:
   

Jetzt passt sich die Datengültigkeit dynamisch an.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#6
Hallo, :19:

wenn Du diel Liste "Als Tabelle formatieren" eingerichtet hast und die hat den Namen "Tabelle1" dann so: :21:


Code:
Formula1:="=INDIRECT(""Tabelle1[Spalte1]"")"

"Spalte1" anpassen, falls es eine andere ist. :21:
________
Servus
Case
Antworten Top
#7
Jetzt muss mir nur mal jemand erklären, wofür es da VBA braucht.  :21:
(siehe #5)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Vielen Dank schon mal, ich werde mal die Informationen verarbeiten :)

Ich erzeuge in einem Tabellenblatt das Dropdown-Menü und die Werte dazu erhalte ich aus einer Tabelle, die auf einem anderen Tabellenblatt "Parameter" ist. Das DropDown-Menü sollte benutzerfreundlich sein, sprich durch einfaches hinzufügen von neuen Werten soll auch das Dropdown-Menü aktualisiert werden. Die Werte des Dropdown-Menüs sind Mitarbeiterbewertungen, die Mitarbeiter selbst werden aus anderen Excel-Datein gelesen, sodass die Zellen, dabei auch variieren. Dabei dachte ich, dass VBA die beste Lösung wäre.

Ich versuche es mal umzusetzen und würde mich ggbfls. wieder hier melden, falls ich weiterhin Probleme habe. Aber schonmal vielen Dank an alle!
Antworten Top
#9
Also habe es probiert und bin schon weitergekommen, jedoch werden mir nicht alle Werte angezeigt. Ich habe mal die Werte in eine neu Mappe kopiert. Bei dem Dropdown-Menü wird mir zu Beginn erst eine Leerzeile angezeigt und dann nur der erste Wert. Ich habe versucht es so wie @RPP63 zu machen, habe dabei wohl irgendwo einen Fehler.

Tut mir leid für die Umständlichkeiten, aber weiß gerade nicht weiter. Ich danke euch!


Angehängte Dateien
.xlsx   DropDown.xlsx (Größe: 16,08 KB / Downloads: 4)
Antworten Top
#10
Verwende immer A1.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste