Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1868to1872
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel vba dropdown mit variabler Liste

Excel vba dropdown mit variabler Liste
19.02.2022 14:16:19
Luis
Guten Tag,
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(„Tabelle“2).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

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel vba dropdown mit variabler Liste
19.02.2022 17:52:42
Yal
Hallo Luis,

With Worksheets("Tabelle"2). ...
Kann nur fehlerhaft sein.
Du kannst auch folgendes versuchen:

Formula1:="=" & ThisWorkbook.Worksheets("Tabelle1").Cells(7, u).Resize(1, h).Address
Den Parameter "Operator" würde ich auch weglassen.
VG
Yal
Weshalb verwendest du nicht...
20.02.2022 09:42:13
Beverly
Hi,
...einfach für jede Spalte eine eigene intelligente Tabelle? Die erweitert ihren Bereich doch automatisch sobald ein neuer Eintrag hinzukommt - da sparst du dir den ganzen Code und die damit verbundenen Probleme.
Bis später
Karin

Anzeige
AW: Weshalb verwendest du nicht...
21.02.2022 11:59:06
Yal
Moin,
Genau: den Weg über die "intelligente" oder "aktive" Tabellen sind am einfachste.
Eine aktive Tabelle erzeugen: Bereich markieren, Menü "Einfügen", "Tabelle"
Userbild
Achtung, Fehler im Bild. Richtig ist mit doppelten Hochkommas
=INDIREKT("Liste_A[A]")
Dann rumspielen, in dem eine Zahl am Ende der Liste eingetragen und ohne weiteres in dem Dropdown angezeigt wird.
VG
Yal
AW: Weshalb verwendest du nicht...
23.02.2022 07:45:29
Luis
Die Sache ist, die Auswahl des Linken Dropdown soll auch beliebig anpassbar sein, d.h. dort soll vom Anwender z.b F,G,H ergänzt werden. Daher gehe ich über Excel vba damit Spalten und Zeilen für das dropdwon menü variable sind.
Bei excel vba bin ich jetzt soweit, dass die Anzahl der Spalten Einträge je Kategorie erkannt wird. Nur die Werte fehlen, d.h. im Dropdown kann man sind leere Auswahlmöglichkeiten...
Liegt das an ".Address" ?
Hier der aktuelle Code:
With Worksheets("TotalCosts").Cells(c.Row, "H").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlNotBetween, Formula1:="=" & ThisWorkbook.Worksheets("MachineList").Cells(13, u).Resize(1, h).Address
.IgnoreBlank = True
'.InCellDorpdown = True
.InputTitle = "Choose"
.ErrorTitle = ""
.InputMessage = "Please choose a Machine Typ"
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
Beste Grüße
Luis
Anzeige
Deine Antwort erklärt nicht...
23.02.2022 11:31:23
Beverly
Hi,
...weshalb du nicht trotzdem Intelligente Tabellen verwenden kannst, denn die Adresse passt sich dabei doch automatisch an die Anzahl an vorhandenen Daten an - alles ganz ohne VBA.
Bis später
Karin

AW: Deine Antwort erklärt nicht...
23.02.2022 12:12:47
Luis
Funktioniert die intelligente Tabelle auch, wenn ich z.B. Kategorie G neu hinzufüge in "Tabelle2" und dazu für die Kategorie "G" neue Daten (TEst1, TEst2, TEEst3) in "Tabelle2" ergänze?
Dann soll in der einen DropdownListe zusätzlich "G" erscheinen. Wähle ich "G" aus, soll man in der anderen DropdownListe nur zwischen den neuen Daten (TEst1, TEst2, TEEst3) auswählen können, die spezifisch für "G" sind.
Tabelle2 soll ganz variabel anpassbar sein...
Versteht ihr was ich meine?
LG
Luis
Anzeige
AW: Deine Antwort erklärt nicht...
23.02.2022 12:33:02
Beverly
Hast du den Vorschlag mit den intelligenten Tabellen denn überhaupt schon mal gestestet? ...
Klar muss du für die neue Kategrie G in einer weiteren Spalte eine neue intelligente Tabelle mit den Daten Test1, Test2 usw. (also mit den Daten die für diese Kategorie auswählbar sein sollen) anlegen, aber in der Ausgangsliste erscheint G sofort zur Auswahl, sobald du es in einer neuen Zeile der intelligenten Tabelle ergänzt.
Bis später
Karin

AW: Deine Antwort erklärt nicht...
23.02.2022 13:15:18
Luis
Dann ist die Lösung mit einer intelligenten Tabelle nicht das was ich suche. Ich benötige eine lösung mit excel vba. Wie gesagt das Problem ist jetzt nur noch bei Formula1:="=" & ThisWorkbook.Worksheets("Tabelle2").Cells(6, u).Resize(1, h).Address liegen
Die Anzahl der Werte wird übergeben (leere Felder zur Auswahl) aber irgendwie nicht die Werte für die jeweilige Kategorie.
Muss man eventuell mit Indirect arbeiten? Hat wer eine Lösung ?
hier der code nochmal:
With Worksheets("Tabelle1").Cells(c.Row, "B").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlNotBetween, Formula1:="=" & ThisWorkbook.Worksheets("Tabelle2").Cells(6, u).Resize(1, h).Address
.IgnoreBlank = True
'.InCellDorpdown = True
.InputTitle = "Choose"
.ErrorTitle = ""
.InputMessage = "Please choose a Machine Typ"
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
Irgendwie muss das möglich sein
bitte um Hilfe
LG
Luis
Anzeige

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige