"Error 5 en tiempo de ejecución" cuando se utiliza la función Mid(), Left() o Right()


Para una versión de Microsoft Word 97 de este artículo, consulte 181102 .

Para obtener una versión de Microsoft Word 98 de este artículo, consulte 181103 .

Para una versión de Microsoft Word 2000 de este artículo, consulte 201979 .

Síntomas


En Microsoft Visual Basic para Aplicaciones (VBA), al utilizar el Mid(), Right()o función Left() , recibirá el siguiente mensaje de error:

Error de tiempo de ejecución '5': "argumento o llamada a procedimiento no válida"

Causa


Este comportamiento se produce cuando el argumento de longitud de la instrucción es negativo.

La función Mid() devuelve una parte de una cadena de texto empezando en una posición de carácter especificado. La sintaxis del comando es la siguiente

Mid(<string>, <start> [, <length>])
donde < cadena > es la cadena de texto para buscar, < start > es la posición del carácter donde se comienza y < longitud > es el número de caracteres que se devuelven. Si no se especifica ningún argumento < length >, o si hay menos de < longitud > caracteres en el texto, la función devuelve todos los caracteres desde la posición < start > al final de la cadena.

Solución


Microsoft proporciona ejemplos de programación fines ilustrativos únicamente, sin ninguna garantía tanto expresa como implícita. Esto incluye, pero no se limita, a las garantías implícitas de comerciabilidad o idoneidad para un propósito particular. Este artículo asume que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se utilizan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden explicarle la funcionalidad de un determinado procedimiento, pero no modificarán estos ejemplos para ofrecer mayor funcionalidad ni crearán procedimientos que cumplan sus requisitos específicos. Para obtener más información, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:

290140 cómo ejecutar el código de ejemplo para los programas de Office XP desde artículos de Knowledge Base

Para resolver este problema, asegúrese de comprobar la longitud de la cadena, como en el ejemplo siguiente:

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