|
Не работает On Errors
|
|||
---|---|---|---|
#18+
Всем привет. Суть задачи довольно проста: в Excel-файле (1) в ячейках D4:D18 указаны пути к файлам (N). Макрос должен пооткрывать эти файлы и в файле 1 проставить в ячейках напротив каждого пути значения "Ок" или "Не найдено" в зависимости от того, найден ли файл. Смоделирована ситуация, когда нет 1-го и 5-го по счету файлов. Обнаружив отсутствие 1-го файла макрос корректно проставляет "Не найдено" (срабатывает OnErrors). Но почему-то, когда доходит до открытия 5-го файла, вместо действия по OnErrors Excel выдает обычную ошибку Run Time Error '1004'. Подскажите, пожалуйста, почему работает не так, как задумано? :) Собственно, код: Код: 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. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 19:10 |
|
Не работает On Errors
|
|||
---|---|---|---|
#18+
Обработка ошибки должна заканчиваться Resume Иначе вторая ошибка возникает внутри обработчика первой ошибки и уже не отслеживается читаем хелп по On Error ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 19:22 |
|
Не работает On Errors
|
|||
---|---|---|---|
#18+
И вообще, устроили ПОМОЙКУ в коде, какие-то метки, куча goto (простите, не сдержался): Код: 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. 29. 30. 31. 32. 33.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 19:33 |
|
Не работает On Errors
|
|||
---|---|---|---|
#18+
Вообще, наверное Код: vbnet 1.
или я вообще не понял смысл того, что вы хотели сделать с этим листом и в какой книге он должен находиться ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 19:44 |
|
Не работает On Errors
|
|||
---|---|---|---|
#18+
Shocker.Pro, спасибо, но в Вашем коде также не удалось разобраться. И он, кстати, не работает :( Может быть, есть какой-то более цивилизованный способ собрать статусы по наличию файлов, не открывая их? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2014, 11:39 |
|
Не работает On Errors
|
|||
---|---|---|---|
#18+
muzikizumтакже не удалосьв смысле? в собственном коде вы тоже не разобрались? muzikizumИ он, кстати, не работаетя не проверял, я попытался показать, как его написать более структурно и несколько упростить. в итоге, не понял, что там у вас за активация листа XXX muzikizumМожет быть, есть какой-то более цивилизованный способ собрать статусы по наличию файлов, не открывая их?Конечно. Функция Dir ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2014, 11:44 |
|
Не работает On Errors
|
|||
---|---|---|---|
#18+
muzikizum, Уберите метки и goto кроме того, который с on error. Последний надо перенести наверх. Уберите код, активирующий worksheets, он не нужен. Пишите все с полным явным путем - если cells, то какого шит, если шит, то из какой бук... если ранг, то тоже - из какого шит. Все декларации перенесите вверх и не используйте недекларированные переменные. private sub... dim oSheet as worksheet dim oRange as Range on error goto methodexit ... set oSheet = thisworkbook.Worksheets("Ogogogo") set oRange = oSheet.Range("A1") code, code, code... methodexit: if err.number <> 0 then end if end sub ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2014, 12:03 |
|
Не работает On Errors
|
|||
---|---|---|---|
#18+
muzikizum, И это не айс использовать on error, чтобы выяснить, есть файл или нет файла. Используйте Scripting.FileSystemObject. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.04.2014, 12:15 |
|
|
start [/forum/topic.php?fid=60&fpage=44&tid=2156408]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 284ms |
total: | 428ms |
0 / 0 |