Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Динамическое изменение RowSource для ComboBox - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Динамическое изменение RowSource для ComboBox (Макросы/Sub)
Динамическое изменение RowSource для ComboBox
oleg60 Дата: Среда, 24.08.2016, 17:13 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Подскажите, пожалуйста: в свойстве RowSource CombmBox прописан диапазон A2:A7. Можно ли значение этого свойства менять динамически при добавлении новых данных в А8:А...(записей в CombmBox) в столбце A?
К сообщению приложен файл: 2928001.xlsm (21.3 Kb)


Сообщение отредактировал oleg60 - Среда, 24.08.2016, 17:15
 
Ответить
СообщениеПодскажите, пожалуйста: в свойстве RowSource CombmBox прописан диапазон A2:A7. Можно ли значение этого свойства менять динамически при добавлении новых данных в А8:А...(записей в CombmBox) в столбце A?

Автор - oleg60
Дата добавления - 24.08.2016 в 17:13
sboy Дата: Среда, 24.08.2016, 17:29 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2566
Репутация: 724 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
[vba]
Код
Private Sub UserForm_Initialize()
lr = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
t = "A2:A" & lr
ComboBox1.RowSource = t
End Sub
[/vba]


Яндекс: 410016850021169

Сообщение отредактировал sboy - Среда, 24.08.2016, 17:44
 
Ответить
СообщениеДобрый день.
[vba]
Код
Private Sub UserForm_Initialize()
lr = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
t = "A2:A" & lr
ComboBox1.RowSource = t
End Sub
[/vba]

Автор - sboy
Дата добавления - 24.08.2016 в 17:29
KuklP Дата: Среда, 24.08.2016, 18:11 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Вариант:
[vba]
Код
Private Sub UserForm_Initialize()
    ComboBox1.List = Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value
End Sub
[/vba]
К сообщению приложен файл: _2928001.xlsm (18.8 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Среда, 24.08.2016, 18:13
 
Ответить
СообщениеВариант:
[vba]
Код
Private Sub UserForm_Initialize()
    ComboBox1.List = Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value
End Sub
[/vba]

Автор - KuklP
Дата добавления - 24.08.2016 в 18:11
oleg60 Дата: Четверг, 25.08.2016, 08:23 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 38
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Спасибо, большое, за помощь, оба варианта отлично работают.
 
Ответить
СообщениеСпасибо, большое, за помощь, оба варианта отлично работают.

Автор - oleg60
Дата добавления - 25.08.2016 в 08:23
gena10111 Дата: Вторник, 08.05.2018, 11:59 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте!
Очень прошу помочь разобраться: как же работает макрос [vba]
Код
ComboBox1.List = Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value
[/vba]
Как сделать его рабочим для конкретного файла Excel, для конкретного комбобокса в UserForm?
 
Ответить
СообщениеЗдравствуйте!
Очень прошу помочь разобраться: как же работает макрос [vba]
Код
ComboBox1.List = Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value
[/vba]
Как сделать его рабочим для конкретного файла Excel, для конкретного комбобокса в UserForm?

Автор - gena10111
Дата добавления - 08.05.2018 в 11:59
_Boroda_ Дата: Вторник, 08.05.2018, 14:44 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16674
Репутация: 6479 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Все просто
1. Rows.Count - кол-во строк на листе. Обозначим "r". Может быть или 1 048 576 (для Excel от 2007 и выше), или 65 536 (для Excel 2003 и ниже)
2. Sheets(1).Cells(Rows.Count, 1) - если мы нигде больше при обращении к ячейкам не пишем Sheets(1), то и здесь не нужно, поэтому просто
Cells(Rows.Count, 1) - ячейка строки к и столбца 1 (столбец А)
3. Sheets(1).Cells(Rows.Count, 1).End(xlUp) - эквивалентно тому, что мы встали в ячейку из п.2 и нажали Контрл+СтрелкаВверх - переносимся в первую снизу заполненную ячейку столбца А
4. Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row - определяем номер строки ячейки, найденной в п.3. Обозначим "r1"
5. Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row) - диапазон от ячейки А2 до ячейки Аr1
6. Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value - значения из диапазона п.5
7. ComboBox1.List = Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value - комбобоксу с именем ComboBox1 назначаем список из п.6

Думаю, что дальше
Как сделать его рабочим для конкретного файла Excel, для конкретного комбобокса в UserForm?
Вы уже сможете разобраться самостоятельно.
Если нет, то
- Прочитайте Правила форума
- Создайте свою тему согласно п.5q Правил форума
- Приложите файл в формате Excel размером до 100кб согласно п.3 Правил форума


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВсе просто
1. Rows.Count - кол-во строк на листе. Обозначим "r". Может быть или 1 048 576 (для Excel от 2007 и выше), или 65 536 (для Excel 2003 и ниже)
2. Sheets(1).Cells(Rows.Count, 1) - если мы нигде больше при обращении к ячейкам не пишем Sheets(1), то и здесь не нужно, поэтому просто
Cells(Rows.Count, 1) - ячейка строки к и столбца 1 (столбец А)
3. Sheets(1).Cells(Rows.Count, 1).End(xlUp) - эквивалентно тому, что мы встали в ячейку из п.2 и нажали Контрл+СтрелкаВверх - переносимся в первую снизу заполненную ячейку столбца А
4. Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row - определяем номер строки ячейки, найденной в п.3. Обозначим "r1"
5. Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row) - диапазон от ячейки А2 до ячейки Аr1
6. Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value - значения из диапазона п.5
7. ComboBox1.List = Range("A2:A" & Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Value - комбобоксу с именем ComboBox1 назначаем список из п.6

Думаю, что дальше
Как сделать его рабочим для конкретного файла Excel, для конкретного комбобокса в UserForm?
Вы уже сможете разобраться самостоятельно.
Если нет, то
- Прочитайте Правила форума
- Создайте свою тему согласно п.5q Правил форума
- Приложите файл в формате Excel размером до 100кб согласно п.3 Правил форума

Автор - _Boroda_
Дата добавления - 08.05.2018 в 14:44
gena10111 Дата: Четверг, 10.05.2018, 09:13 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, благодарен Вам за объяснение. Немного подумал, и откорректировал для своих нужд.
 
Ответить
Сообщение_Boroda_, благодарен Вам за объяснение. Немного подумал, и откорректировал для своих нужд.

Автор - gena10111
Дата добавления - 10.05.2018 в 09:13
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Динамическое изменение RowSource для ComboBox (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!