#NUM! ошибка в пользовательской функции

Silver Hawk спросил: 28 апреля 2018 в 09:36 в: excel

Я создал новую функцию под названием length, которая проверяет количество символов и показывает "результат ошибки", если число больше 5. Однако результат функции #NUM! Если тест рассчитан на 5 символов или меньше, будет показан результат.

Что не так?

Function length (number as integer)
    If ( Len (CStr (number)) > 5 ) then
        length = "error"
    End if
    If ( Len (Cstr (number)) <6) then
        length = "the count is true"
    End if
End Function

1 ответ

Есть решение
Luuklag ответил: 28 апреля 2018 в 10:12

Из-за характера типов данных это произойдет. Чтобы быть более точным, ваша функция будет работать для значений до 32,767 и включая их. Над этим он вернет #NUM, так как ваш number больше не будет помещаться внутри целого, заставляющего его быть.

Если вы определяете свой number как Long, он будет обрабатывать значения до и, в том числе, 2,147,483,647.

Для более подробного объяснения различий между Integer и Long вы может прочитать ответ RubberDuck в этом сообщении: Зачем использовать Integer вместо Long?

Darren Bartrup-Cook ответил: 28 апреля 2018 в 12:47
Вы также можете заменить первый конец, если и тест для < 6 и заменить на Else. т. е. если это & ​​gt; 5, то ошибка, иначе это правда. Кроме того, вместо length = "error" вы можете использовать length = CVErr(xlErrNum), чтобы вернуть значение ошибки (#NUM!). Возврат реальной ошибки позволяет использовать =IFERROR(...) cpearson.com/excel/ReturningErrors.aspx
Luuklag ответил: 28 апреля 2018 в 01:06
Хорошие предложения @ DarrenBartrup-Cook
Silver Hawk ответил: 28 апреля 2018 в 11:09
Я сделал числовую переменную как строку. Это сработало. Неправильно было в типе данных. Я сделал этот тип так долго, и он также отлично работал @luuklag