Le nombre maximum de caractères que vous pouvez utiliser dans la chaîne en fonction vba est 255. Je suis en train d'exécuter cette fonctionDébarrasser la taille maximale de la chaîne dans une fonction vba?
Var1= 1
Var2= 2
.
.
.
Var256 =256
RunMacros= "'Tims_pet_Robot """ & Var1 & """ , """ & Var2 & """ , """ ... """ & Var256 """ '"
Runat=TimeValue("15:00:00")
Application.OnTime EarliestTime:=Runat, Procedure:=RunMacros & RunMacros2 ', schedule:=True
Il exécute une procédure à un certain moment et passe un tas de variables à ce . mais la chaîne est trop longue.
Mise à jour: Malheureusement je suis sûr que ce n'est pas la fenêtre de la montre. En outre, ce n'est pas vraiment la taille maximale d'une chaîne que j'ai affaire. C'est la taille maximale de une chaîne dans une fonction vba.
Par exemple cette fonction fonctionne.
Sub test()
Dim RunAt As Date
Dim RunWhat As String
RunAt = Now + 0.00001
RunWhat = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 'that makes 254 'a''s
Application.OnTime EarliestTime:=RunAt, Procedure:="'" & RunWhat & " 12'"
End Sub
Sub aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(m As Integer)
MsgBox ("it works!" & m)
End Sub
Mais si vous changez le 12-123, il brise Exemple
Sub test2()
Dim RunAt As Date
Dim RunWhat As String
RunAt = Now + 0.00001
RunWhat = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" & _
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 'that makes 254 'a''s
Application.OnTime EarliestTime:=RunAt, Procedure:="'" & RunWhat & " 123'"
End Sub
Sub aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(m As Integer)
MsgBox ("it works!" & m)
End Sub
Ce code ne fonctionne pas, je suis sûr que c'est parce qu'une fonction vba ne peut pas gérer une chaîne avec plus de 255 caractères. Même si vous êtes dans Excel et appelez une fonction et lui donner une chaîne plus longue que 255 caractères cela ne fonctionne pas. Essayez dans la cellule A1 = vlookup ("string vraiment long", A1: Z10, 1) puis placez la très longue chaîne quelque part dans cette plage. Le vlookup échouera (ne manque pas de le trouver, mais vous ne serez pas en mesure de le faire)
Aussi je suis conscient qu'il y a une longueur maximale à un sous-nom, je suis juste en dessous. Désolé que cela semble si laid.
Mise à jour 2: alors j'ai fini d'imprimer la variable sur une feuille et d'appeler la fonction appelée par ontime pour la lire sur la feuille. :(
[De Joel Spolsky] (http://www.joelonsoftware.com/articles/fog0000000319.html) (qui a dirigé une grande partie du développement d'Excel au début): «Excel utilise les chaînes Pascal en interne, ce qui explique pourquoi les cordes dans de nombreux endroits dans Excel est limité à 255 octets, et c'est aussi l'une des raisons pour lesquelles Excel est incroyablement rapide. " Cela s'applique probablement au problème VLookup que vous mentionnez, bien que, comme d'autres l'ont indiqué, VBA n'a pas cette limite. – mwolfe02
Vous pouvez utiliser un 'String (number_of_repeats, char_to_repeat)' pour faire une chaîne à la volée au lieu de 'aaaaaaaaaaaaaaaaaaaaaaaaaaa ...' –