J'ai ce code. C'est un code artificiel pour l'exemple.Comment gérer ce problème de validation Excel?
Sub x()
ActiveSheet.Range("A1").Validation.Delete
ActiveSheet.Range("A1").Validation.Add Type:=xlValidateCustom, Formula1:="=VALUE(RIGHT(A1,6))>0"
End Sub
Si A1 est vide lorsque le code s'exécute, j'obtiens une erreur 1004, définie par l'application ou définie par l'objet. Je crois que c'est parce que la formule aboutit à #VALUE!
au lieu de False
. Si j'essaie de définir la validation manuellement, j'obtiens un avertissement que le résultat est une erreur, mais si je clique sur OK, la validation fonctionne normalement.
je me suis dit que c'était parce que je n'exonère les cellules vides de validation, alors j'ai ajouté la ligne:
Sub x()
ActiveSheet.Range("A1").Validation.Delete
ActiveSheet.Range("A1").Validation.IgnoreBlank = True
ActiveSheet.Range("A1").Validation.Add Type:=xlValidateCustom, Formula1:="=VALUE(RIGHT(A1,6))>0"
End Sub
Mais que l'erreur vient changeai d'une ligne. Maintenant, je reçois l'erreur 1004 sur la ligne IgnoreBlank = True
. Je suppose que je pourrais temporairement entrer une valeur dans la cellule, définir la validation, puis supprimer le contenu de la cellule, mais j'espère qu'il y a une manière différente.
Est-ce que je fais quelque chose de mal? Je prévoyais à l'origine de valider par programmation à la fin au lieu d'utiliser la fonction de validation d'Excel.