{quote}{login=EducatedFool}{date=17.01.2010 12:10}{thema=}{post}Может, намного не в тему, но здесь можно почитать, как отловить неинициализированный массив: http://www.cyberforum.ru/vba/thread59041.html
PS: Приведены весьма оригинальные решения вопроса - ни до одного из решений я бы сам не додумался...{/post}{/quote}
Спасибо, Очень даже в тему, жаль только что в решении много шаманства и мало логики (второй вариант).
{quote}{login=The_Prist}{date=16.01.2010 09:36}{thema=Re: }{post}{quote}{login=Le][a}{date=16.01.2010 09:29}{thema=}{post}Уважаемый The_Prist подскажите как в коде отменить перехватчик ошибок-дабы он не срабатывал на не предусмотренную ошибку.{/post}{/quote}Можно поподробней? Отменить пропуск ошибок оператором On Error Resume Next можно оператором On Error Goto 0 о чем я и написал в посте от 16.01.2010, 20:58. В результате перед считыванием данных из массива у Вас отсутствуют данные о ошибках, наступивших ранее и Вы получите ошибку только в случае не объявленного массива.{/post}{/quote}
{quote}{login=The_Prist}{date=16.01.2010 08:58}{thema=Re: Re: Re: Re: }{post}{quote}{login=Le][a}{date=16.01.2010 08:56}{thema=Re: Re: Re: }{post}код ошибки не постоянен{/post}{/quote}А зачем Вам для проверки наличия данных в массиве код ошибки? Достаточно знать, что она была Err.Number <> 0 А для окончательной подстраховки можно перед проверкой очищать ошибки
On Error Goto 0: On Error Resume Next lcount = UBound(Arr) If Err.Number <> 0 Then MsgBox "массив пуст"{/post}{/quote}
Я согласен, как частное решение этот вариант подходит. Но допустип массив вообще не объявлен-в этом случае диагностика будет не верна. В плане использования перехвата ошибок примерно всё понятно, может кто нить знает альтернативные методы.
{quote}{login=The_Prist}{date=16.01.2010 08:52}{thema=Re: Re: }{post}{quote}{login=Le][a}{date=16.01.2010 08:50}{thema=Re: }{post}(а самое неприятное как показала практика не надёжный){/post}{/quote}Позвольте узнать - чем он такой ненадежный?{/post}{/quote}
код ошибки не постоянен (причину пока не понял). Да и интересовало существует ли какой нить "прямой" метод.
возможно я не корректно выразился но ситуация в следующем: после того как массив "затирается" он всё равно объявлен но не инициирован - Ubound - вернёт ошибку
{quote}{login=The_Prist}{date=16.01.2010 08:29}{thema=}{post}Что значит глобальный? Вам макросом надо узнать? Что Вы подразумеваете под массивом - диапазон ячеек, массив как переменная, коллекция?{/post}{/quote}
под массивом я понимаю переменную, да в в макросе (дабы определить стоит ли формировать данные заново или возможно они уже есть в массиве и удастся избежать напрасных вычислений)
Доброе время суток. Есть глобальный динамический массив (2007 Excel) и в него переодически выгружаются различные данные, по неоходимости массив зачищается-непосредственно сам вопрос: как определить есть ли данные в массиве? Заранее спасибо.