"Run-time error 5" quando utiliza a função de Mid(), Left() ou Right()


Para obter uma versão do Microsoft Word 97 deste artigo, consulte 181102 .

Para obter uma versão do Microsoft Word 98 deste artigo, consulte 181103 .

Para obter uma versão do Microsoft Word 2000 deste artigo, consulte 201979 .

Sintomas


No Microsoft Visual Basic for Applications (VBA), quando utiliza o Mid(), Right()ou função de Left() , poderá receber a seguinte mensagem de erro:

Erro de tempo de execução '5': "argumento ou chamada de procedimento inválido"

Causa


Este comportamento ocorre quando o argumento de comprimento para a declaração é negativo.

A função Mid() devolve uma parte de uma cadeia de texto, começando na posição de um determinado carácter. A sintaxe do comando é a seguinte

Mid(<string>, <start> [, <length>])
onde < cadeia > é a cadeia de texto a procurar, < > é a posição do carácter partir da qual pretende iniciar e < duração > é o número de caracteres a devolver. Se for especificado nenhum argumento < duração >, ou se existirem menos de < duração > caracteres no texto, a função devolve todos os caracteres da posição < Iniciar > para o fim da cadeia.

Resolução


Microsoft fornece exemplos de programação apenas, a título sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação que está a ser demonstrada e com as ferramentas que são utilizadas para criar e depurar procedimentos. Técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. Para mais informações, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:

290140 como executar o código de exemplo para os programas do Office XP a partir de artigos da Base de dados de conhecimento

Para resolver este problema, certifique-se de que o comprimento da cadeia, como no exemplo seguinte de ensaio:

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