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.