Excel vba dropdown mit variabler Liste
19.02.2022 14:16:19
Luis
Ich brauche eure Hilfe.
Ich habe ein Problem bei den Dropdown Listen über Excel Vba.
Ich habe eine Arbeitsmappe und zwei Arbeitsblätter (Tabelle1, Tabelle2). Leider hat der Upload nicht funktioniert.
Hier ein Dropbox Link mit der Mappe: https://www.dropbox.com/s/b31x8ysvb62o4vd/DropdownListe.xlsx?dl=0
In "Tabelle1" sind in Zeile 6 verschiedene Kategorien (Bsp. "A,B,C,D,E"). Diese sollen aber variabel angepasst werden. Indem eine Kategorie z.B in Zelle (6,H) ergänzt wird.
Für jede Kategorie gibt es in der jeweiligen Spalte ab Zeile 7 jeweilige Einträge. Die Einträge sollen auch variabel anpassbar (Eintrag ergänzen) bleiben. Diese dienen später für die Werte in den Dropdown Listen in "Tabelle2".
In "Tabelle2" kann man z.B. in den Zellen A2:A6 jeweils eine Kategorie auswählen. in der jeweiligen Zeile in Spalte B soll dann die Dropdown Liste mit den Werten aus "Tabelle1" erscheinen.
Mein Problem ist bei Formula1= .... (siehe Code). Wie kann ich den Variablen Zellenbereich aus "Tabelle1" für die jeweilige Kategorie an "Tabelle2" in das Dropdown übergeben ? Meine Lösung übergibt mir kein Inhalt in die Dropdown Liste...
Mein Code lautet im Arbeitsblatt "Tabelle2"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As RANGE
If Not Application.Intersect(Target, Me.RANGE(A2:A6)) Is Nothing Then
For Each c In Application.Intersect(Target, Me.RANGE(A2:A6))
Application.EnableEvents = False
Dim t As Integer
t = ThisWorkbook.Worksheets(Tabelle1).Cells(6, Columns.Count).End(xlToLeft).column - 1
Dim u As Integer
For u = 2 To t
If Me.Cells(c.Row, A).Value = ThisWorkbook.Worksheets(Tabelle1).Cells(6, u).Value Then
Dim h As Integer
h = ThisWorkbook.Worksheets(Tabelle1).Cells(Rows.Count, u).End(xlUp).Row - 6
With Worksheets(Tabelle2).Cells(c.Row, B).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlNotBetween, Formula1:="=" & ThisWorkbook.Worksheets(Tabelle1).Cells(7, u).Address & ":" & ThisWorkbook.Worksheets(Tabelle1).Cells((7+h), u).Address 'hier das Problem, es funktioniert nicht
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = "Choose"
.ErrorTitle = ""
.InputMessage = "Please choose"
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End If
End If
Next u
Application.EnableEvents = True
Next c
End Sub