2011-10-28 1 views
1

Je dois exécuter un sous-programme VBA 4 secondes plus tard. Le sous-programme prend un paramètre de chaîne. Le problème que j'ai est que la chaîne que j'ai besoin de passer semble être trop longue et c'est une erreur. Essayez d'exécuter ce code:Comment contourner la limitation de caractères VBA OnTime?

Sub DoTest() 
    Application.OnTime Now + TimeSerial(0, 0, 4), "'PrintStr ""aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa""'" 
End Sub 

Sub PrintStr(str As String) 
    Debug.Print str 
End Sub 

DoTest() s'exécute sans erreurs. Maintenant, ajoutez un "a" à la chaîne de a et exécutez DoTest() à nouveau. Vous obtiendrez une erreur "Cette macro ... ne peut pas être trouvée".

Comment puis-je contourner ce problème, soit en utilisant OnTime ou une autre solution qui me permettrait d'appeler un sous-programme qui accepte un paramètre X nombre de secondes plus tard? J'utilise Excel 2003.

Répondre

2

Essayez quelque chose comme ceci:

Dim str As String 

Sub DoTest() 
    str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 
    Application.OnTime Now + TimeSerial(0, 0, 4), "PrintStr" 
End Sub 

Sub PrintStr() 
    Debug.Print str 
End Sub 
+0

Merci pour la solution rapide! Un autre DOH! moment ^^ – 10basetom

Questions connexes