Страница: 1 |
Страница: 1 |
Вопрос: О работе с ListBox
Добавлено: 03.05.09 18:31
Автор вопроса: машинист
Уважаемый Форум,
При работе с ListBox в многоколонном формате никак не выходят два момента, в обоих случаях заполнение ListBox провожу через 2-мерный массив (пробовал и через Range xls-листа, тоже ничего не выходит).
Момент 1. Вывести названия заголовков столбцов в закрепленную верхнюю строку (ColumnHeads=true, ColumnCount=10).
Момент 2. Я работаю из Книги1, содержащей код (макрос). В Книге2 шесть листов (Лист1..Лист6) с одонродными многоколонными таблицами. Лист1..Лист4 выводятся на ListBox без всяких проблем, а Лист5..Лист6 не желают с сообщением: Run-time error '9': "Subscript out of range". Создается впечатление, что где-то заложено ограничение на количество открываемых в "чужой" книге листов, в "своей" открываются все.
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #1
Добавлено: 04.05.09 08:03
2. Run-time error '9': "Subscript out of range". Как правило возникает, когда пытаешься присвоить значение не существующему элементу массива или элементу коллекции. Проверь индексацию. В твоем случае ты можешь выходить за предел количества строк ListBox, их надо динамически добавлять во время работы макроса. Ограничений на количество открываемой в "чужой" книге листов нет.
Номер ответа: 2
Автор ответа:
машинист
Вопросов: 6
Ответов: 26
Профиль | | #2
Добавлено: 04.05.09 19:50
Я думаю, хитрость кроется не в количестве строк листа, а в самих неоткрываемых листах. Лист1 больше Листа5 раза в четыре, но Лист1 открывается, а Лист5 - нет. Прямо сейчас поменял листы местами, но те два из 6 так и не открываются.
Номер ответа: 3
Автор ответа:
машинист
Вопросов: 6
Ответов: 26
Профиль | | #3
Добавлено: 05.05.09 00:18
Порылся в материалах форума про Listbox, и вот что вышло.
по п.1. Постепенным искусственным наращиванием .ListCount методом .AddItem() до требуемой величины и последующим использованием .RowSource удалось-таки загнать в закрепленную верхнюю строку заголовки столбцов.
по п.2. Причина отказа открытия отдельных страниц тривиальна - в ссылках на названия страниц использованы знаки тире ("-", в то время, как в самих названиях использованы знаки подчеркивания ("_".
Но пошла другая беда - с испольдованием "метода .RowSource" загружается (открывается) лбюой выбранный лист, но попытка вместо него загрузить любой другой лист программа подвисает на первом же "искусственном" .AddItem() с сообщением "Run-time error '70': Permission denied" (в отличие от "заполнения массивом". Каким образом сбросить .ListCount в нулевое значение? Нашёл! Нужно до начала .AddItem() сбросить Listbox.RowSource = "". Всё пошло.
Номер ответа: 4
Автор ответа:
машинист
Вопросов: 6
Ответов: 26
Профиль | | #4
Добавлено: 05.05.09 00:21
Со смайликами само получилось, я нипричем