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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2011, 11:55   #1
Vellosity
 
Регистрация: 17.04.2011
Сообщений: 9
Восклицание Синтаксис ComboBox'a в UserForm'е

Здравствуйте! Помогите пожалуйста решить такой вопрос. По поводу синтаксиса ComboBox'a топика не нашёл. Вот такой код я написал:

Private Sub ComboBox1_Change()
Worksheets("Ãëàâíàÿ").Select
ListFillRange = "$B$18:$C$24"
LinkedCell = "$N$20"
DropDownLines = 8
Display3DShading = False
End Sub

При запуске формы содержащей этот ComboBox, ComboBox не содержит никаких значений (пуст). Диапазон $B$18:$C$24 - содержит значения. Ячейку N$20 я использовал для записи в нее номера выбранного элемента из списка ComboBox'a. Код написал по примеру синтаксиса ComboBox'a на обычном листе (не в UserForm'е). В чем моя ошибка? Заранее спасибо!
Vellosity вне форума Ответить с цитированием
Старый 20.11.2011, 12:19   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Во-первых, если вы хотите изменить свойство ListFillRange у комбобокса, так вы и указывайте объект, к которому относится это свойство.
(например, так: ComboBox1.ListFillRange = "$B$18:$C$24" )

Это, кстати, относится и к другим строкам вашего макроса

Во-вторых, а зачем при изменении выбранного значения в комбобоксе его снова заполнять???
Он же уже заполнен...

Прямо в свойствах элемента управления на форме задайте эти свойства - и код будет не нужен
EducatedFool вне форума Ответить с цитированием
Старый 20.11.2011, 12:24   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Это поможет

Код:
Private Sub ComboBox1_Change()
Лист1.Range("$N$20") = ComboBox1.Value
End Sub

Private Sub UserForm_Activate()
ComboBox1.RowSource = "Лист1!$B$18:$C$24"
End Sub
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 20.11.2011, 13:43   #4
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Если диапазон не будет меняться, можно его вписать прямо в RowSource
vikttur вне форума Ответить с цитированием
Старый 20.11.2011, 13:56   #5
Vellosity
 
Регистрация: 17.04.2011
Сообщений: 9
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Это поможет

Код:
Private Sub ComboBox1_Change()
Лист1.Range("$N$20") = ComboBox1.Value
End Sub

Private Sub UserForm_Activate()
ComboBox1.RowSource = "Лист1!$B$18:$C$24"
End Sub
Вставил ваш код, попутная изменяя имена листов на свои. Не заработало Код вставил в окно кода формы.
Vellosity вне форума Ответить с цитированием
Старый 20.11.2011, 14:04   #6
Vellosity
 
Регистрация: 17.04.2011
Сообщений: 9
По умолчанию

Прайс.Range("$N$20") = ComboBox1.Value дебагер эту строку подсвечивает
Vellosity вне форума Ответить с цитированием
Старый 20.11.2011, 19:32   #7
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от Vellosity Посмотреть сообщение
Прайс.Range("$N$20") = ComboBox1.Value дебагер эту строку подсвечивает
вы не правильно обращаетесь к листу.У вас скорее всего нет кодового имени лита Прайс,а есть Лист1 например

Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
синтаксис boomeer Общие вопросы C/C++ 5 09.09.2011 15:25
Синтаксис Gen_r_questions PHP 2 05.03.2011 17:33
Синтаксис... webber9989 SQL, базы данных 1 29.07.2010 12:40
Синтаксис си dr.Chas Общие вопросы C/C++ 3 04.01.2010 18:25