Function Foo(thiscell As Range) As Boolean
Foo = thiscell.hasFormula And (InStr(1, UCase(Split(thiscell.formula, Chr(40))(0)), "bar") > 0)
End Function
Cette fonction existe pour tester la présence d'une certaine sous-chaîne (bar, dans ce cas) avant le (.
Le cas qui me pose problème est celui où la cellule passée dans la fonction est vide, où thisCell.hasFormula est fausse, mais où l'instruction après le et est toujours évaluée. Cela me donne une erreur d'indice hors de portée au moment de l'exécution.
VBA continue-t-il réellement à évaluer le second argument de la fonction And, même si le premier est faux ?