"Run-time error 5" când utilizați funcția Mid(), Left() sau Right()


Pentru o versiune Microsoft Word 97 a acestui articol, consultați 181102 .

Pentru o versiune Microsoft Word 98 a acestui articol, consultați 181103 .

Pentru o versiune Microsoft Word 2000 a acestui articol, consultați 201979 .

Simptome


În Microsoft Visual Basic for Applications (VBA), atunci când utilizați Mid(), Right()sau funcția Left() , este posibil să primiți următorul mesaj de eroare:

Run-time error '5': "apel de procedură nevalidă sau argument"

Cauza


Acest comportament se produce atunci când argumentul lungime pentru instrucțiunea este negativ.

Funcția Mid() returnează o parte din un șir de text, începând de la un anumit caracter position. Sintaxa comenzii este după cum urmează

Mid(<string>, <start> [, <length>])
în cazul în care < șir > șir de text pentru a căuta, < start > este în poziția de caractere pentru a porni și < lungimea > este numărul de caractere pentru a reveni. Dacă nu este specificat nici un argument < lungime > sau dacă există mai puține < lungime > caractere în text, funcția returnează toate caracterele din poziția < start > la sfârșitul șirului.

Rezolvare


Microsoft furnizează exemple de programare scop ilustrativ, fără nicio garanţie explicită sau implicită. Aceasta include, dar nu se limitează la, garanţiile implicite de vandabilitate sau de potrivire pentru un anumit scop. Acest articol presupune că sunteţi familiarizat cu limbajul de programare care este prezentat şi cu instrumentele utilizate pentru a crea şi a depana proceduri. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri, dar nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară sau pentru a construi proceduri pentru a răspunde cerințelor dvs. specifice. Pentru mai multe informații, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:

290140 cum se execută mostre de cod pentru programele Office XP de la articole din baza de cunoștințe

Pentru a rezolva această problemă, asigurați-vă că pentru a testa lungimea șirului, ca în exemplul următor:

Sub ErrorDoesNotOccur()
Dim Test As String
Dim ReturnText As String

' Empty string, could be passed as an empty dialog
' variable, for example.
Test = ""

' Test the length of the string to ensure
' that subtracting 1 from the length leaves
' at least 1 character.
If Len(Test) - 1 > 0 then
ReturnText = Mid(Test, Len(Test) - 1)
End If

End Sub