|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
Hello world! На странице http://www.excelworld.ru/stuff/vba_function/system/iserror/24-1-0-98 расписано описание данной функции. В частности: Функция IsError IsError( Expression ) 1. Функция позволяет организовать удобную обработку ошибок при построчном контроле ошибок. Какой еще бывает режим контроля ошибок? 2. При этом всякая предусматриваемая, но не устраняемая внутри процедуры ошибка получает свой код и функция возвращает либо требуемое значение, либо код ошибки, который проверяется функцией. Значения ошибки создаются путем преобразования действительных чисел в значения ошибки с помощью функции CVErr Возвращаемое значение Возвращает значение типа Boolean , указывающее, является ли значением ошибки. Функция IsError возвращает значение True , если параметр Expression имеет значение ошибки; в противном случае возвращается False Если функция возвращает тип Boolean, что значит второй пункт определения ф-ции IsError? , в котором написано: функция возвращает либо требуемое значение, либо код ошибки, который проверяется функцией ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 10:49 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
Yagrus2 Если функция возвращает тип Boolean, что значит второй пункт определения ф-ции IsError? это описание относится к функции, которая проверяется на возврат ей ошибки и дальнейшую проверку этого результата функцией IsError. А не к самой IsError. Yagrus2 Какой еще бывает режим контроля ошибок? Про On Error слышали что-нибудь? Вот это тоже он, но не построчный, а более глобальный. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 11:22 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
The_Prist Yagrus2 Какой еще бывает режим контроля ошибок? Про On Error слышали что-нибудь? Вот это тоже он, но не построчный, а более глобальный. Да, конечно. Читал Пользовался On error goto label On error goto labelOn error resume next On error resume nextOn error goto 0 Если они глобальные, то как включается построчный? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 11:43 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
The_PristYagrus2 Если функция возвращает тип Boolean, что значит второй пункт определения ф-ции IsError? это описание относится к функции, которая проверяется на возврат ей ошибки и дальнейшую проверку этого результата функцией IsError. А не к самой IsError.. Я хочу написать функцию, которая проверяет наличие элемента в коллекции по заданному имени. Ниже код процедуры, который сбоит если элемента с заданным именем нет. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Почему IsError не возвращает False, если его выражение возвращает ошибку? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 12:00 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
Yagrus2, это прикол? Функция IsError и является неким построчным отловом ошибок. Она позволяет проверить на наличие ошибки конкретное значение или результат функции. И в зависимости от этого в строке принять решение что делать. Например: Код: vbnet 1. 2. 3. 4. 5.
или чуть проще: Код: vbnet 1. 2. 3.
Если бы мы использовали On Error Resume next, то у нас все строки выполнялись бы без пропуска. Это и дольше и не всегда желательно. Например, в примере у меня перезаписывается значение ячейки. В случае с On Error оно перезапишется в любом случае, а при IsError - только если в ячейке нет ошибки. Пример не очень удачный, но суть должна быть ясна. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 12:01 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
The_Prist Функция IsError и является неким построчным отловом ошибок. Этот момент понял, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 12:08 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
Yagrus2, переменная типа Variant может иметь специальное значение: Empty, Null, Error, Missing. Функция IsError - одна из функций, проверяющих такие значения. Другие функции из этого семейства, как нетрудно догадаться - IsEmpty, IsNull, IsMissing. Функция IsError никак не может "отловить" ошибку, если она возникает при вычислении ее аргумента, в вашем случае - при обращении к несуществующему элементу коллекции. Здесь только On Error, можно так Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2019, 16:04 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
КазанскийYagrus2, переменная типа Variant может иметь специальное значение: Empty, Null, Error, Missing. Функция IsError - одна из функций, проверяющих такие значения. Другие функции из этого семейства, как нетрудно догадаться - IsEmpty, IsNull, IsMissing. Функция IsError никак не может "отловить" ошибку, если она возникает при вычислении ее аргумента, в вашем случае - при обращении к несуществующему элементу коллекции. Здесь только On Error, можно так Код: vbnet 1. 2. 3. 4.
Спасибо за разъяснение. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 09:56 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
правильно ли я понял второй пункт в описании ф-ции есть? 2. При этом всякая предусматриваемая, но не устраняемая внутри процедуры ошибка получает свой код и функция возвращает либо требуемое значение, либо код ошибки, который проверяется функцией. Значения ошибки создаются путем преобразования действительных чисел в значения ошибки с помощью функции CVErr Правильно я понимаю, что под предусматриваемая, но не устраняемая внутри процедуры ошибка имеется ввиду любая ошибка, а не только Empty Null Error Missing Например мой случай - объект не существует элемент коллекции. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
Правда на строке Код: vbnet 1.
возникает ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2019, 11:10 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
Yagrus2, оставьте в покое IsError, CVErr. Неприменимы они тут. Значение Variant/Error не является объектом, поэтому его нельзя использовать в операторе Set. Переменная, объявленная As Object, исходно имеет значение Nothing. Идентификатор функции - та же переменная. Поэтому функцию можно написать так, и в MainSub проверять на Nothing. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Как видите, функция фактически получилась из одной команды. Поэтому обычно эту команду включают в тело вызывающей программы, конечно под On Error. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 01:41 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
* vItemID As Variant ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 10:53 |
|
EXCEL. Функция IsError
|
|||
---|---|---|---|
#18+
Yagrus2Я хочу написать функцию, которая проверяет наличие элемента в коллекции по заданному имени. Ниже код процедуры, который сбоит если элемента с заданным именем нет. Надо както так. IsError() тут непригодна. Код: vbnet 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 16:21 |
|
|
start [/forum/topic.php?fid=61&msg=39761795&tid=2172147]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
48ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 275ms |
total: | 424ms |
0 / 0 |