Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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
Со смайликами само получилось, я нипричем

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам