Einmal wie ein kleines Kind auf den Boden werfen und ganz laut losbrüllen. Scheitert heutzutage daran, dass man nicht wieder hochkommt!

Excelstammtisch. Wir diskutieren ChatGPT und copilot. Ich zeige, dass die Lösungen manchmal nicht korrekt sind.

Problem: ich möchte mit VBA ermitteln, ob in einer Zelle eine Datenprüfung liegt. ChatGPT antwortet mir:

Sub CheckDataValidation()
    Dim rng As Range
    Dim validationType As XlDVType
    
    ' Definiere die Zelle, die du überprüfen möchtest
    Set rng = Worksheets("DeinBlatt").Range("A1")
    
    ' Überprüfe, ob die Zelle eine Datenprüfung hat
    If rng.Validation.Type <> xlValidateNone Then
        ' Erhalte den Typ der Datenprüfung
        validationType = rng.Validation.Type
        
        ' Zeige den Typ der Datenprüfung in der Konsole an (kann angepasst werden)
        MsgBox "Die Zelle hat eine Datenprüfung vom Typ: " & validationType
    Else
        ' Wenn keine Datenprüfung vorliegt
        MsgBox "Die Zelle hat keine Datenprüfung."
    End If
End Sub

Ich teste:

Ich beschwere mich:

ChatGPT schlägt

xlValidateCustom 

vor. Das Ergebnis, wenn keine Datenprüfung in der Zelle vorhanden ist:

Ich frage copilot. Die Antwort:

If Not Cells(1, 1).Validation Is Nothing Then
    MsgBox "Die Zelle hat eine Datenüberprüfung."
Else
    MsgBox "Die Zelle hat keine Datenüberprüfung."
End If

Das Ergebnis:

Das Makro meldet immer, dass die Zelle eine Datenüberprüfung hat.

Sämtliche Antworten sind falsch oder fehlerhaft.

Alexander lässt nicht locker. Er findet nach mehreren Versuchen eine Lösung bei ChatGPT:

Sub CheckNoDataValidationCriteria2()
    Dim targetCell As Range
    Set targetCell = Selection ' Hier die Zelle angeben, die du überprüfen möchtest
    
    ' Überprüfen, ob die Zelle eine Datenprüfung hat
    If Not targetCell.Validation Is Nothing Then
        ' Überprüfen, ob spezifische Kriterien festgelegt wurden
        Dim validationFormula As String
        On Error Resume Next
        validationFormula = targetCell.Validation.Formula1
        On Error GoTo 0

        If validationFormula = "" Then
            MsgBox "Die Zelle hat keine spezifischen Datenprüfungskriterien (jeder Wert ist zugelassen)."
        Else
            ' Kriterien in Zelle D1 schreiben
            Range("B2").Value = "Datenprüfungskriterien: " & validationFormula
            MsgBox "Die Zelle hat Datenprüfung mit spezifischen Kriterien. Die Kriterien wurden in Zelle D1 geschrieben."
        End If
    Else
        ' Wenn keine Datenprüfung vorhanden ist, Zelle D1 löschen
        Range("B2").ClearContents
        MsgBox "Die Zelle hat keine Datenprüfung."
    End If
End Sub

Sie funktioniert: für Zellen mit und für ohne Datenüberprüfung:

Die Lösung funktioniert; der Denkansatz ist jedoch nicht korrekt:

Der Befehl

On Error Resume Next

übergeht den Fehler. Die Zeile

validationFormula = targetCell.Validation.Formula1

kann ausgeführt werden oder nicht. Würde sie einen Fehler liefern (also keine Datenüberprüfung ist vorhanden), wird sie übergangen und validationFormula bleibt leer („“). Ich hätte es mit err.number überprüft.

Aber okay – ich gebe zu: man kann mit ChatGPT / copilot eine funktionierende Lösung finden. Wenn man beharrlich ist.

Danke an Alexander Vogelmann für seine Beharrlichkeit.