Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variable in Validation.Add ... Formula1:=

Variable in Validation.Add ... Formula1:=
07.04.2006 12:40:20
specke
Hallo Experten,
ich habe ein Tabellenblatt, in dem ich in mehreren Spalten den Inhalt von Dropdown-Feldern definiert habe. Für die Spaltenköpfe habe ich Namen definiert.
In einem zweiten Arbeitsblatt möchte ich nun abhängig von der Eingabe in der 2.Spalte (dort sind die Spaltenköpfe bzw. Namen der Bereiche möglich) die Auswahl des Dropdown-Feldes in der 5. Spalte einschränken lassen. Dies soll mit VBA gemacht werden.
Die Formel
Cells(Zeile, 5).Validation.Modify Type:=xlValidateList, Operator:=xlBetween, Formula1:="=Test"
funktioniert, wenn 'Test' ein definierter Bereich ist.
Nun möchte ich aber, den Inhalt der Zelle 'Cells(Zeile,2)' hinter Formula1 angeben, da der Inhalt ja variabel sein kann. Das bekomme ich leider nicht hin.
Wie muss ich das angeben?
Danke
Gruß Specke
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable in Validation.Add ... Formula1:=
07.04.2006 12:52:44
u_
Hallo,
was ist das denn hinter Formula1:= ? Richtig! Ein String. Und was kann man mit Strings machen? Auch richtig! Mit & veknüpfen.
Ergo: Formula1:="=" &Cells(zeile,2)
Gruß
Geist ist geil!
Tausend Dank!
07.04.2006 13:04:38
specke
Vielen Dank! Es funzt, ich war schon am verzweifeln!
Auf den Gedanken der &-Verknüpfung war ich zwar auch schon gekommen, aber so wie ich es umgesetzt hatte, passte es nicht.
Nochmals vielen Dank für die schnelle Hilfe!
Gruß Specke
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Dropdown-Listen mit Excel VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine dynamische Dropdown-Liste in Excel zu erstellen, die von einer Eingabe in einer anderen Zelle abhängt, kannst Du die Validation.Add Methode in VBA verwenden. Hier sind die Schritte:

  1. Öffne den VBA-Editor, indem Du ALT + F11 drückst.

  2. Füge ein neues Modul hinzu, indem Du im Menü Einfügen > Modul auswählst.

  3. Schreibe den folgenden Code in das Modul:

    Sub ErstelleDropdown()
       Dim Zeile As Long
       Zeile = 1 ' Setze die Zeile, in der die Dropdown-Liste erscheinen soll
    
       ' Setze die Validierung
       Cells(Zeile, 5).Validation.Delete ' Vorhandene Validierung löschen
       Cells(Zeile, 5).Validation.Add Type:=xlValidateList, _
           AlertStyle:=xlValidAlertStop, _
           Operator:=xlBetween, _
           Formula1:="=" & Cells(Zeile, 2).Value ' Dynamische Zelle
    End Sub
  4. Ändere die Zeile-Variable entsprechend Deiner Anforderungen.

  5. Schließe den VBA-Editor und führe das Makro aus.

Diese Methode verwendet die Validation.Add Funktion, um eine Dropdown-Liste zu erstellen, die auf dem Inhalt von Cells(Zeile, 2) basiert.


Häufige Fehler und Lösungen

  • Fehler: "Ungültige Formel"

    • Lösung: Stelle sicher, dass der Inhalt von Cells(Zeile, 2) tatsächlich auf einen definierten Bereich verweist. Verwende das Range-Objekt, um sicherzustellen, dass die Referenz korrekt ist.
  • Fehler: Dropdown zeigt keine Werte

    • Lösung: Überprüfe, ob die Validierung richtig gesetzt wurde. Du kannst dies machen, indem Du die Zeile Cells(Zeile, 5).Validation.Delete hinzufügst, um sicherzustellen, dass vorherige Validierungen entfernt werden.

Alternative Methoden

Wenn Du keine VBA verwenden möchtest, kannst Du auch die Datenüberprüfung in Excel verwenden:

  1. Wähle die Zelle aus, in der die Dropdown-Liste erscheinen soll.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle Liste unter Zulassen.
  4. Gib im Feld Quelle die Formel ein, z.B. =A1:A10, um eine statische Liste zu erstellen.

Diese Methode ist jedoch nicht so dynamisch wie die VBA-Option.


Praktische Beispiele

Angenommen, Du hast in A1:A10 eine Liste von Früchten, und in B1 wählst Du eine Frucht aus. Die Dropdown-Liste in C1 sollte nur die Früchte anzeigen, die zu der Auswahl in B1 passen. Der VBA-Code könnte so aussehen:

Sub ErstelleFruchtDropdown()
    Dim Auswahl As String
    Auswahl = Cells(1, 2).Value ' Zelle B1

    Cells(1, 3).Validation.Delete
    Cells(1, 3).Validation.Add Type:=xlValidateList, _
        AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, _
        Formula1:="=" & Auswahl
End Sub

Tipps für Profis

  • Nutze Application.WorksheetFunction um komplexere Validierungen oder Berechnungen durchzuführen.
  • Implementiere Fehlerbehandlung in Deinen VBA-Skripten, um unerwartete Probleme abzufangen.
  • Überlege, UserForm-Elemente zu verwenden, um die Benutzeroberfläche zu verbessern und die Eingabe zu steuern.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Dropdown-Listen dynamisch verknüpfen? Du kannst mehrere Validation.Add-Aufrufe in Deinem VBA-Code verwenden, um verschiedene Dropdown-Listen auf unterschiedliche Zellen zu verlinken.

2. Funktioniert dies in allen Excel-Versionen? Ja, die oben genannten Methoden funktionieren in den meisten modernen Excel-Versionen, die VBA unterstützen, jedoch könnten spezifische Funktionen je nach Version variieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige