Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 01.11.2008, 14:35   #1
StasSv
Пользователь
 
Регистрация: 29.12.2007
Сообщений: 71
По умолчанию Заполнение списка

Здрасти помогите пожалуста, пытаюсь заполнить спиок в форме из изменяющегося количества ячеек, но что то не выходит, ругается говорит ошибка времени выполнения. пытался воть так:

Private Sub UserForm_Initialize()
Dim i As Variant
i = Range("col_doh").Value
ListBox1.RowSource = Range(Cells(4, 1), Cells(3 + i, 1)).Value
End Sub

Заранее спасибо.
StasSv вне форума
Старый 01.11.2008, 14:53   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Этот код поместит в listbox значения всех ячеек, начиная с а4, и далее вниз до пустой строки:

(это на случай, если Вы в ячейке с именем col_doh храните количество строк, которые нужно поместить в листбокс)

Код:
Private Sub UserForm_Initialize()
    ListBox1.RowSource = Range([a4], Cells([a4].End(xlDown).Row, 1)).Address(, , xlA1, False)
End Sub
Ну а вообще, Ваш код можно переписать в виде
Код:
Private Sub UserForm_Initialize()
    i = Range("col_doh").Value
    ListBox1.RowSource = Range(Cells(4, 1), Cells(3 + i, 1)).Address(, , xlA1, False)
End Sub
Но в этом случае могут возникать ошибки: во-первых, если не будет диапазона с именем col_doh, во-вторых, если этот диапазон содержит нечисловое значение, ну и так далее. К тому же, если уж объявлять в данном случае переменную i, то с типом данных Integer или Long, но не с Variant. Ну и лучше тогда уж написать i = val(Range("col_doh").Value)

Ну или вообще так:
Код:
Private Sub UserForm_Initialize()
    i = val(Range("col_doh").Value)
    ListBox1.RowSource = [a4].Resize(i).Address
End Sub

Последний раз редактировалось EducatedFool; 01.11.2008 в 15:03.
EducatedFool вне форума
Старый 01.11.2008, 15:13   #3
StasSv
Пользователь
 
Регистрация: 29.12.2007
Сообщений: 71
По умолчанию

спасибо! работает)
StasSv вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнение форм StasSv Microsoft Office Excel 1 16.10.2008 15:22
Заполнение БД (Delphi) Air Помощь студентам 15 12.04.2008 11:43
Заполнение стека inkvizitor Общие вопросы Delphi 5 08.10.2007 17:01
Заполнение динамического списка из файла KORT Помощь студентам 2 01.05.2007 22:28
заполнение формы zetrix Безопасность, Шифрование 1 29.10.2006 11:07