Функция Excel VBA возвращает неверное количество символов - PullRequest
0 голосов
/ 02 мая 2020

Я использую функцию Excel VBA "Левый", чтобы получить три левых символа строки, но функция возвращает только два. Строка содержит более трех символов, поэтому я не понимаю, почему она возвращает меньше. Официальная документация указывает, что функция должна возвращать количество запрошенных символов или всю строку, если строка короче запрошенного числа символов.

Code Snippet

Ошибка появляется в разделе ниже, но Trim(), кажется, работает правильно. Я также не могу войти в функцию Left(), чтобы посмотреть, как она обрабатывает вводы.

part = Trim(part)
pref = Left(part, 3)

EDIT1: я изменил количество символов в функции Left(), чтобы посмотреть, изменится ли оно соответствующим образом. Left(part, 2) вернул 1 символ (просто P). Похоже, что функция системно возвращает на 1 символ меньше, чем запрошено.

EDIT2: я также изменил оператор If, чтобы принимать на один символ меньше для событий, в которых Left() вернуло неправильное количество.

Modified Code Snippet

В приведенном выше фрагменте должен быть принят один V, но код пропущен до строки, указанной стрелкой, которая показывает, что сравнение по-прежнему ложно. Это наводит меня на мысль, что непечатаемый символ ведет всю строку, но я не знаю, как это проверить.

1 Ответ

0 голосов
/ 02 мая 2020

Как упоминалось в комментариях, перед первым видимым символом в строках предшествовали непечатаемые символы. Я использовал следующий код для удаления других потенциально проблемных c символов:

part = Trim(part)
While Left(part, 1) < Chr(32) And Len(part) > 1
    part = Right(part, Len(part) - 1)
Wend

Это предложило более общий способ удаления проблемных c начальных символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...