Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Validation Auswahl per VBA

Forumthread: Validation Auswahl per VBA

Validation Auswahl per VBA
TomS
Hallo,
ich habe ein Validationfeld mit Typ "Liste" erstellt, Quelle ist ein Bezug (Quelle: =auswahl). Wenn sich der Inhalt des Bezuges ändert steht immer noch die vorige Auswahl im Validationfeld. Kann ich per VBA den ersten Eintrag selektieren oder eine "Aktualisierung" des Inhaltes vollziehen?
Konkret möchte ich zentral die Sprache ändern, aber nach dem Umschalten nicht alle Datenüberprüfungsfelder durchklicken.
Vielen Dank
Tom
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Validation Auswahl per VBA
08.09.2011 13:37:11
Beverly
Hi Tom,
ich nehme an, du änderst die Sprache ebenfalls in einem (anderen) DropDown-Listenfeld? Versuche es mal mit dem folgenden Code im Codemodul des Tabellenblatts

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$1" Then Range("D4:D8") = ""
End Sub

D1 ist die Adresse für die Sprachauswahl und D4:D8 die Zellen mit den abhängigen DropDown-Listenfeldern. Beim Ändern des Eintrags in D1 werden alle Inhalte in D4:D8 gelöscht.


Anzeige
Zellen mit Validation initialisieren
08.09.2011 13:47:08
NoNet
Hallo Tom,
um die Zellen, die sich per Gültigkeitsliste auf einen benannten Bereich beziehen, bei Änderungen in diesem Bereich zu initialisieren (Default-Wert : Erster Eintrag der Liste oder LEER), kannst Du diesen Code in das Tabellenblatt, das die Werte der Liste enthält, kopieren :
VBA-Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    'Validations-Felder bei Änderung im Bereichsname anpassen
    Dim rngZelle As Range, ws As Worksheet, rngG As Range
    Const strName = "Quelle" 'Der Name, auf den sich die Gültigkeit bezieht
    If Not Intersect(Target, ActiveWorkbook.Names(strName).RefersToRange) Is Nothing Then
        For Each ws In Worksheets
            On Error Resume Next 'Falls Sheet keine Gültigkeiten enthält
            Set rngG = ws.Cells.SpecialCells(xlCellTypeAllValidation)
            If Not rngG Is Nothing Then
                For Each rngZelle In rngG
                    If rngZelle.Validation.Formula1 = "=" & strName Then
                        'Entweder ersten Eintrag der Liste anzeigen :
                        rngZelle.Value = Range(ActiveWorkbook.Names(strName).RefersTo).Cells(1, 1)
                        'oder: Zelle mit Gültigkeit leeren (ohne Inhalt)
                        rngZelle.ClearContents
                    End If
                Next
            End If
        Next
    End If
End Sub
Der Name des benannten Bereiches ist hier "Quelle", das kannst Du im Code anpassen.
Es werden alle Tabellenblätter der Mappe nach Gültigkeits-Bezug auf die Liste durchsucht !
Im o.g. Beispiel werden die entsprechenden Zelle geleert (rngZelle.ClearContents) - diese Zeile kannst Du auskommentieren, damit stattdessen der erste Eintrag der Liste in den Zellen eingetragen wird !
Gruß, NoNet
Exceltreffen 28.-30.10.2011 in Chemnitz
Ein Treffen für alle Excel-Freunde und Besucher deutschsprachiger Excel-Foren.
Alle Infos - Programm - Anmeldung - Teilnehmerliste etc. gibt es auf
http://www.exceltreffen.de/index.php?page=211
Wir freuen uns auf euch...

AW: Validation Auswahl per VBA
TomS

Hi Karin und NoNet,
danke für Eure Anregungen. Da ich sehr fürs "Einfache" bin, werde ich nun eine gemischte Variante von Euren 2 Vorschlägen machen. Ich werde, da es nur 7 Auswahlfelder sind dem Validationfeld immer die erste Position des dementsprechenden Bereiches zuordnen. Kann man ja auch gut mit ner function machen.
Eine Lösung über das Validation-Object an sich (äquiv. z.B. zu Listbox.Listindex()) gibts ja wahrscheinlich nicht.
VG Tom
AW: Validation Auswahl per VBA
Beverly

Hi Tom,
meinst du so etwas:

Range(Application.Substitute(ActiveCell.Validation.Formula1, "=", "")).Cells(2)



Anzeige
AW: Validation Auswahl per VBA
08.09.2011 16:13:55
TomS
Hi Karin und NoNet,
danke für Eure Anregungen. Da ich sehr fürs "Einfache" bin, werde ich nun eine gemischte Variante von Euren 2 Vorschlägen machen. Ich werde, da es nur 7 Auswahlfelder sind dem Validationfeld immer die erste Position des dementsprechenden Bereiches zuordnen. Kann man ja auch gut mit ner function machen.
Eine Lösung über das Validation-Object an sich (äquiv. z.B. zu Listbox.Listindex()) gibts ja wahrscheinlich nicht.
VG Tom
Anzeige
AW: Validation Auswahl per VBA
08.09.2011 17:43:27
Beverly
Hi Tom,
meinst du so etwas:

Range(Application.Substitute(ActiveCell.Validation.Formula1, "=", "")).Cells(2)



;
Anzeige

Infobox / Tutorial

Excel VBA: Auswahl per Validation-Feld steuern


Schritt-für-Schritt-Anleitung

Um die Auswahl eines Validation-Feldes mittels VBA zu steuern, kannst Du folgende Schritte befolgen:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf das Projektfenster und wähle Einfügen > Modul.
  3. Füge den VBA-Code ein:

    • Verwende den folgenden Code, um die Auswahl im Validation-Feld zu aktualisieren:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Address = "$D$1" Then
           Range("D4:D8").ClearContents
           For Each cell In Range("D4:D8")
               cell.Validation.Invalidate
               cell.Value = Range("Quelle").Cells(1, 1).Value
           Next cell
       End If
    End Sub
  4. Passe die Zellen an:

    • Stelle sicher, dass die Zellen D1 (für die Sprache) und D4:D8 (für die abhängigen DropDown-Listen) korrekt angegeben sind.
  5. Speichern und Testen:

    • Speichere Deine Änderungen und teste die Funktionalität im Excel-Blatt.

Häufige Fehler und Lösungen

  • Fehler: Das Validation-Feld aktualisiert sich nicht:

    • Überprüfe, ob die Zellen, die Du mit der Validation verknüpft hast, korrekt sind. Stelle sicher, dass Du die richtige Adresse im Code verwendest.
  • Fehler: Ungültige Werte im Validation-Feld:

    • Vergewissere Dich, dass die Quelle der Liste (=auswahl) korrekt definiert ist und keine leeren Zellen enthält.

Alternative Methoden

Falls Du eine einfachere Methode bevorzugst, kannst Du die Excel-Funktion INDIREKT verwenden, um die Quelle dynamisch zu ändern:

Range("D4").Validation.Delete
Range("D4").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=INDIREKT(D1)"

Diese Methode ermöglicht eine direkte Verknüpfung der Validation-Liste mit der Zelle, die die Sprache auswählt.


Praktische Beispiele

Beispiel 1: Sprache ändern
Wenn in Zelle D1 die Sprache geändert wird, wird das erste Element der Liste in den Zellen D4:D8 automatisch ausgewählt.

Beispiel 2: Gültigkeitsliste zurücksetzen
Du kannst den Inhalt der Zellen zurücksetzen, indem Du den folgenden Code verwendest:

If Target.Address = "$D$1" Then
    Range("D4:D8").Value = ""
End If

Tipps für Profis

  • Verwende Application.EnableEvents = False: Setze dies am Anfang Deines Codes, um zu verhindern, dass der Code mehrfach ausgelöst wird, während Du Änderungen vornimmst.

  • Debugging: Nutze Debug.Print innerhalb Deiner Schleifen, um zu überprüfen, welche Zellen bearbeitet werden.

  • Verwende benannte Bereiche: Das Arbeiten mit benannten Bereichen erleichtert die Pflege Deines Codes und macht ihn verständlicher.


FAQ: Häufige Fragen

1. Wie kann ich den ersten Eintrag der Validation-Liste auswählen?
Verwende den Code cell.Value = Range("Quelle").Cells(1, 1).Value, um den ersten Eintrag der Liste auszuwählen.

2. Was mache ich, wenn mein Validation-Feld nicht funktioniert?
Überprüfe die Quelle Deiner Validation-Liste und stelle sicher, dass sie korrekt referenziert wird. Stelle auch sicher, dass keine ungültigen Werte in den Zellen vorhanden sind.

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