none
Datenüberprüfung mit Makro RRS feed

  • Frage

  • Hallo zusammen

    Ich möchte eine Datenüberprüfung "Liste" via Makro lösen. Die Idee ist, wenn ich in eine Zelle klicke erstellt es mir ein Dropdown gemäss Makro.

    Anbei mein Beispiel:

    Zuerst überprüfe ich ob eine Zelle selektiert wurde uns starte dann das Marko:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call test End Sub

    Hier das Makro:

    Sub test()
    '
    ' test Makro
    '
    '
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="=WENN(Systeme!$E3=1;Antwort!$B$4:$B$5;1;0)"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End Sub

    Das funktioniert aber leider nicht. Weiss jemand wie ich das lösen kann?

    Man fragt sich sicher, wieso ich das so lösen will. Bei der Datenüberprüfung "Liste" habe ich eine Zeichenbeschränkung. Meine Formel wäre aber länger und da dachte ich, ich umgehe es mit VBA. :-)

    Dankbare Grüsse

    Yanick

    Donnerstag, 25. April 2013 09:28

Alle Antworten

  • Du kannst die Zeichenbeschränkung der Validation nicht mit VBA umgehen wenn Du in VBA auch die Validation benutzt.

    Aber es ist möglich die Zelleingabe mit dem Change-Ereignis zu überwachen und den Wert selber zu prüfen. Dann kannst Du machen was Du willst.

    Private Sub Worksheet_Change(ByVal Target As Range)
      With Application
        .EnableEvents = False
        .Undo
        .EnableEvents = True
        MsgBox "Eingabe nicht erlaubt"
      End With
    End Sub

    Außerdem ist es der direkte Weg und hat den Vorteil das Deine Datei nicht ewig größer wird wenn Du eine neue Zelle anklickst (Du löscht ja die alten Validations nicht!).

    Andreas.

    Freitag, 26. April 2013 10:14