nick7inc

Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору ol7ca Цитата: почему-то возникает ошибка (subscript out of range) в строке Set ws = Sheets(a(i)) | Вы, батенька, лентяй. Что я вам здесь и здесь писал? Не работает - разбивайте сложные выражения на составляющие, проверяйте тип данных и значения, которое передаёте функции, введите, наконец, промежуточные переменные. Вместо тупого Resume Next используйте Stop в месте обработки ошибки, а при остановке в отладчике смотрите значения и типы данных, которые вы передаёте. Set ws = Sheets(a(i)) надо разбить на 1) получение имени листа в переменную типа String (НЕ МАССИВ, а именно обычная строковая переменная); 2) присвоение указателя на лист при помощи команды Set. И определитесь, наконец, в какой книге Sheets() должен искать лист с вашим именем. Не пишите всё это в одну строчку, разбейте на несколько, чтобы отладчик показал вам конкретное место возникновения ошибки. Добавлено: SAS888 Цитата: Resume Next - плохой тон программирования. в корне не согласен. ИМХО могу привести ряд "красивых" решений с помощью этой команды. Однако, то, что | Аргументировынное использование - возможно, но только тогда, когда программист точно представляет, как программа с этой командой будет работать. А не механически перекладывать на Resume Next любые ошибочные ситуации в программе. Цитата: полностью согласен. Ведь действительно на 100% можно сделать так, чтобы ни в одной ячейке на рабочем листе #N/A не было. | Не совсем так. Бывают случаи, когда нельзя заранее предугадать и on error goto - прекрасный помошник (не забываем, что есть код ошибки и можно получить её текстовое описание). Ячейки с ошибками, безусловно, можно и нужно проверять до вызова функции, использующей их. Добавлено: ol7ca У вас ошибка Out of Range может быть по четырём разным причинам: 1) выход за границы массива; 2) попытка получения указателя на несуществующий лист; 3) вы ищите лист не в той книге; 4) у вас недопустимое имя листа в программе. Всё это можно проверить отладчиком в момент появления ошибки, если следовать моим советам. | Всего записей: 1138 | Зарегистр. 04-05-2007 | Отправлено: 11:28 13-03-2008 | Исправлено: nick7inc, 12:00 13-03-2008 |
|