J'ai un code assez ancien qui tourne bien dans les versions Excel avant 2007. En 2007, il génère une erreur d'exécution: run-time error 16 : expression is too complex
. L'expression est assez simple et l'erreur semble sans rapport avec le problème réel.Est-ce que le moyen Excel évalue le type Date modifié dans Excel 2007
J'essaie de comparer 2 dates.
code exemple suivant:
Function getContractEnd() As Date
getContractEnd = Range("ContractEndDate").Value
End Function
Sub Foo()
Dim currentDate As Date
Do
'stuff
Loop Until currentDate > getContractEnd 'run-time error 16
End Sub
Excel 2007 fonctionne très bien lorsque la condition est changée en:
Loop Until DateValue(currentDate) > DateValue(getContractEnd)
Pourquoi Excel 2007 me force essentiellement de jeter ces paramètres? Les deux devraient évaluer les types de données à Date? La seule explication possible que je puisse imaginer est que quelque chose a changé dans la façon dont la valeur de retour de la fonction getContractEnd est évaluée dans Excel 2007, mais je ne trouve aucune documentation pour le supporter.
Works pour moi. J'aimerais voir une documentation expliquant pourquoi ce comportement existe, mais j'ai été capable de changer le comportement dans Excel 2007 en jouant avec le type de retour et en passant à une boucle while. Je n'arrive toujours pas à le casser sur Excel 2003, mais je vais accepter qu'il s'agit plus de Loop et moins de passer de 2003 à 2007. Merci. – DaveParillo