"Körfel 5" när du använder funktionen för Mid(), Left() eller Right()


En version av denna artikel för Microsoft Word 97 för att se 181102 .

En version av denna artikel för Microsoft Word 98 för att se 181103 .

En version av denna artikel för Microsoft Word 2000 för att se 201979 .

Symptom


I Microsoft Visual Basic for Applications (VBA), när du använder Mid(), Right()och Left() funktion, kan du få följande felmeddelande:

Körfel '5': "Ogiltigt proceduranrop eller argument"

Orsak


Problemet uppstår när argumentet längd för utdraget är negativt.

Funktionen Mid() returnerar en del av en textsträng med början vid position ett visst tecken. Syntaxen för kommandot är

Mid(<string>, <start> [, <length>])
där < sträng > är textsträngen som du söker, < > är teckenpositionen från att starta och < > är antalet tecken som ska returneras. Om inga < längd > argument anges, eller om det finns färre än < längd > tecken i text, returneras alla tecken från < > startposition i slutet av strängen.

Lösning


Microsoft tillhandahåller programmeringsexempel endast utan garanti varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till med att förklara funktionen hos en viss procedur, men kan inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov. Mer information klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

Hur 290140 köra exempelkod för Office XP-program från artiklar i Knowledge Base

Lös problemet genom att testa längden på strängen, som i följande exempel:

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