«Ошибка выполнения 5» при использовании функции Mid(), Left() или Right()


181102 версию Microsoft Word 97 в данной статье, см.

Microsoft Word 98 версии этой статьи содержатся в разделе 181103 .

Microsoft Word 2000 версия этой статьи содержатся в разделе 201979 .

Симптомы


В Microsoft Visual Basic для приложений (VBA), при использовании Mid(), Right()или Left() функции, может появиться следующее сообщение об ошибке:

Ошибка выполнения '5': «недопустимый вызов или аргумент процедуры»

Причина


Это происходит, если длина аргумента для оператора является отрицательным.

Функция Mid() возвращает часть текстовой строки, начиная с заданной позиции. Используется следующий синтаксис команды

Mid(<string>, <start> [, <length>])
где < string > — текстовую строку поиска, является позицию знака, с которого следует начать < Пуск > и < длина > — это количество возвращаемых знаков. Если аргумент < длина > не указан или меньше < длина > знаков в тексте, функция возвращает все символы от позиции < Пуск > в конец строки.

Решение


Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и без гарантии или подразумеваемых. Это включает, но не ограничиваясь, подразумеваемые гарантии товарной пригодности или пригодности для определенной цели. В данной статье предполагается, что вы знакомы с демонстрируемым языком программирования и средствами, которые используются для создания и отладки. Сотрудники службы поддержки Майкрософт могут объяснить возможности конкретной процедуры, но не выполнять модификации примеров для обеспечения дополнительных функциональных возможностей или создания процедур для определенных требований. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:

Как 290140 для запуска примеров кода для программ Office XP из статей базы знаний

Чтобы устранить эту проблему, следует проверить длину строки, как в следующем примере:

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