Dropdown-Menü abhängig machen von eingegebener Zahl?

noshapes

Grünschnabel
Hallo!

Ich schreibe gerade an einem Kalkulations-Werkzeug wo wir Menüs berechnen - automatisch. Soweit so gut aber jetzt würde ich gerne das in einem weiteren Tabellenblatt die Anzahl der Dropdown-Menüs variabel sind. Sprich ich gebe 2 ein und es tauchen auch nur zwei auf. Gebe ich fünf ein sollen es entsprechend mehr sein oder bei 1 eben weniger.

Ist Excel dazu fähig? Wenn ja wie?
 
Hallo,

welche Art von Dropdown Menüs verwendest du da.
Sind das normale Zellen denen eine bestimmte Gültigkeit zugeordnet wurde oder sind das Listen die mit der Steuerelement-Toolbox erstellt wurden?

Guß Thomas
 
Hallo,

ich verwende Excel 2010 und die Dropdown-Variante, die sich über Daten -> Datenüberprüfung und Datenüberprüfung erstellen lässt. Oder hatte das zumindest vor. Sprich in verschiedenen Zellen die nötigen Daten eingeben und bei Bedarf ausgeben lassen (in entsprechender Anzahl).

Meine Idee wäre das mit einer WENN-Abfrage zu gestalten und dann zu sagen: WENN <0; DANN DD ausgeben. Wobei dann die DDs unterhalb erfolgen sollen und die 0 entsprechend hoch sein wird (je nach Anzahl der Menüs, die benötigt werden).

Hoffe das ist irgendwie verständlich ausgdedrückt. ;-)
 
Schau mal hier:

Visual Basic:
' Excel-Event, welches bei Zell-Änderung ausgelöst wird, d.h. manuelles Makro-Ausführen nicht notwendig
' Die Funktion muss dem Eingabe-Tabellenblatt hinterlegt werden!
Private Sub Worksheet_Change(ByVal Target As Range)

    ' überprüft, ob es sich bei der geänderten Zelle um das Eingabefeld (hier A1) handelt
    If Target.Row = 1 And Target.Column = 1 Then
    
        ' überprüft, ob im Eingabefeld ein Zahlenwert eingetragen wurde
        If IsNumeric(Target.Text) Then
        
            ' leert alle bestehenden Dropdowns (hier Tabelle2 Spalte A)
            Worksheets(2).Columns(1).Clear
        
            ' von Zeile 1 bis angegebene Zeile
            For I = 1 To Int(Target.Text)
            
                ' setze Dropdown (hier mit X,Y) in der aktuellen Zeile und der entsprechenden Spalte (hier Tabelle2 SpalteA)
                ' dieser Block wurde mit Macro-Recorder aufgezeichnet
                With Worksheets(2).Cells(I, 1).Validation
                    .Delete
                    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="X,Y"
                    .IgnoreBlank = True
                    .InCellDropdown = True
                    .InputTitle = ""
                    .ErrorTitle = ""
                    .InputMessage = ""
                    .ErrorMessage = ""
                    .ShowInput = True
                    .ShowError = True
                End With
                
            Next I
        End If
    End If
End Sub

Das muss natürlich entsprechend angepasst werden.
Hinweis von mir am Rande: Gültigkeits-Werte kannst du entweder im Code definieren (wie oben), im gleichen Tabellenblatt wie Dropdowns definieren oder im seperaten Tabellen definieren, hier muss der Bereich aber ein benannter Bereich sein.
 
Großartig. Ich versteh nur Bahnhof aber ich kämpf mich da mal beizeiten durch. Bei Fragen dazu stell ich sie hier. Mal schauen.
 
Hallo,

ich kann ohne VBA-Kenntnisse nichts mit den Zeilen 17-29 anfangen. Steht X,Y für den "Koordinaten" in der Tabelle wo die Daten für das Dropdown zu finden sind? Also inkl. dem angelegten Dropdown-Menü als solches?

Wenn "Worksheets" namen haben, muss dort ein Name statt der Zahl eingefügt werden? Wenn ja mit irgendwelchen "umgebenden" Zeichen? Also 'Tabelle1', 'Tabelle2'...?

MUss in Zeile 15 hinter dem "to" noch eine Zahl eingegeben werden oder ist das aktuell ausreichen?
 
Diese Anweisungen erzeugen "nur" die Listen in Excel. Genauso wie wenn du im Menü auf "Daten -> Gültigkeit -> Liste" gehst.

Die Angaben "X, Y" sind keine Zellbezüge sondern die Werte die in der Liste erscheinen. Es kommte genauso "Hund, Katze, Maus" heißen.

Anstatt "Worksheets" kannst du auch schreiben "Tabelle1" oder "Tabelle2" usw. wobei du einfach nur den Namen schreibst ohne irgendwelche Zeichen.

Hinter "To" steht ja quasi eine Zahl. Es ist der Wert den du in die Zelle eingibst. Beispielsweise also 1, 2, ..., 5.
 
Großartig. Ich versteh nur Bahnhof aber ich kämpf mich da mal beizeiten durch. Bei Fragen dazu stell ich sie hier. Mal schauen.

Alternativ kannst du mir auch folgende Angaben geben und ich ändere die entsprechenden Stellen um:
- Welches ist die Eingabezelle?
- Wo ist der Inhalt der ComboBox definiert?
- Wo sollen die ComboBoxen erscheinen?
 
Danke für die Hilfe.

Problem ist allerdings nun, dass ich versuchen soll das simpler zu gestalten damit andere Mitarbeiter, die da nicht so firm sind auch Änderungen vornehmen können.

Sprich:
Ich versuche gerade mit einer WENN-Abfrage zu realisieren, dass bei "größer-als" die Liste ausgegeben wird (aus einem anderen Tabellenblatt namens "DD"). Funktioniert aber so irgendwie nicht.
Hatte bisher folgendes:
Code:
=WENN(B1>0;INDIREKT("DD!$A$1");)
Dachte so würde das ganze DD-Menü mitbekommen was in Tabelle DD auf A1 liegt aber da kam nur der Text im Feld.

@HonniCilest
Falls du magst kannst du Bezeichnungen ja verwenden, vielleicht bekomme ich das nur so mit VBA hin allerdings fehlen auch mir da die Kenntnisse für weitere Arbeiten daran (später).
 
Zuletzt bearbeitet:
Problem ist allerdings nun, dass ich versuchen soll das simpler zu gestalten damit andere Mitarbeiter, die da nicht so firm sind auch Änderungen vornehmen können.

Klingt als wüsstest ihr garnicht so richtig, was ihr eigentlich wollt. Wenn die Anforderungen klar wären müsste man doch nichts mehr anpassen später?

Aus deiner Formel kann ich nur herauslesen, dass das Eingabefeld B1 ist. Was ist mit den anderen 2 Fragen?
 

Neue Beiträge

Zurück