Dynamische bedingte Dropdown-Liste (Datenüberprüfung) per VBA nicht möglich

Anonym
2025-05-12T12:19:07+00:00

Hi,

ich möchte per VBA eine bedingte Dropdown Liste in eine Zelle implementieren.
Manuell mache ich das wie folgt:

Zelle "C36" auswählen --> Datenüberprüfung --> "Liste" --> Quelle:

=XVERWEIS(C35;B16:F16;B17:F18)

In "C35" können per Dropdown die Werte aus der Range "B16:F16" eingetragen werden. Je nachdem, welcher Wert hier angegeben ist, wird in der Zelle "C36" nun ein anderes Dropdown aus dem Bereich "B17:F18" herausgesucht.

Das funktioniert auch einwandfrei.

Dasselbe möchte ich nun in VBA machen, um mehrere solcher Anordnungen nebeneinander zu erzeugen. Mein Code dafür lautet:

Private Sub conf_Validation(Target_Cell)

Set WS = Tabelle1
Set trg = WS.Range(Target_Cell)

frm_1 = "=XVERWEIS(C35;Daten!B16:F16;Daten!B17:F18)"
With trg.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=frm_1
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With

End Sub

Versuche ich dies, so erscheint die Fehlermeldung:
Laufzeitfehler '1004':

Anwendungs- oder objektdefinierter Fehler

Warum kann ich diese Formel manuell in die DÜ eintragen, per VBA aber nicht?
Selbst, wenn ich die Formel manuell eintrage, per VBA auslese und denselben String versuche wieder einzutragen, erzeugt das diese Fehlermeldung.

Grüße,
Alex

Microsoft 365 und Office | Excel | Für das Bildungswesen | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare

1 Antwort

Sortieren nach: Am hilfreichsten
  1. Anonym
    2025-05-12T13:55:57+00:00

    Das Problem konnte inzwischen mithilfe von Reddit r/vba gelöst werden. Die Lösung ist relativ interessant:

    VBA akzeptiert die deutsche Schreibweise der Formel XVERWEIS nicht. Übergibt man stattdessen die Formel "=XLOOKUP(..)", mit Kommata statt Semikolons wohlgemerkt, so funktioniert es. Excel übersetzt daraufhin die Formel in der Datenüberprüfung zurück in's Deutsche, sodass schlussendlich exact der String in der Quelle steht, den VBA ursprünglich zurückgewiesen hat.

    Der funktionierende Code lautet nun:

    Private Sub conf_Validation(Target_Cell)

    Set WS = Tabelle1
    Set trg = WS.Range(Target_Cell)

    ' frm_1 = "=XVERWEIS(C35;Daten!B16:F16;Daten!B17:F18)"

    frm_1 = "=XLOOKUP(C35,Daten!B16:F16,Daten!B17:F18)"
    With trg.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=frm_1
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
    End With

    End Sub

    War diese Antwort hilfreich?

    0 Kommentare Keine Kommentare