неверный вызов процедуры для встроенной функции Excel vba - PullRequest
1 голос
/ 13 марта 2012

Следующий код выдает исключение Ошибка выполнения 5: недопустимый вызов процедуры , когда значение данных, найденных в dataSheet.range.value, равно NULL

temp = Right(Trim(dataSheet.range("A" & i).value), Len(Trim(dataSheet.range("A" & i).value)) - 1)

Поэтому я исправил это следующим образом:

If dataSheet.range("A" & i).value <> "" Then
        temp = Right(Trim(dataSheet.range("A" & i).value), Len(Trim(dataSheet.range("A" & i).value)) - 1)
    Else
        Exit For
    End If

Мой вопрос заключается в том, что оператор If является правильным исправлением?Кажется, что-то большее может происходить, что ускользает от моего понимания ... Как, разве функция Right () не должна просто ничего не возвращать, когда String равен NULL?

1 Ответ

3 голосов
/ 13 марта 2012

Пустая ячейка не равна нулю.

Проблема заключается в вашей формуле: если ячейка пуста или содержит только пробелы, Len(Trim(dataSheet.range("A" & i).value)) равен 0, а Len(Trim(dataSheet.range("A" & i).value)) - 1 равен -1. Когда вы запускаете Right(someString, -1), вы получаете ошибку.

Вы должны сделать это (он также заботится о ячейках, которые содержат только пробелы):

If Len(Trim(dataSheet.range("A" & i).value)) > 0 Then
    temp = Right(Trim(dataSheet.range("A" & i).value), Len(Trim(dataSheet.range("A" & i).value)) - 1)
Else
    ...
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...