Разработка диалоговых окон в Excel, часть 5. Выпадающие списки ComboBox
Вставка
- Опубліковано 1 жов 2024
- Сегодня в нашем видеоуроке мы будем учиться создавать в диалоговом окне выпадающие списки ComboBox. Для этого нам придется решить ряд задач: рассмотреть методы формирования элементов списка; выбор элемента списка по умолчанию; считывание выбранного пользователем элемента списка и замену одних элементов списка на другие в процессе работы формы
Не получается записать в роусоурс данные
Преогромно благодарен за внятное и четкое объяснение! Если возможность будет, покажите исполнения примеров в нескольких вариантах.Например: с использованием функции "İF"; а также с помощью "Саse" и т.п. В любом случае, не смотря что я самоуч, но признаюсь-урок очень понятен.Спасибо!
Спасибо за отзыв. Я так понимаю, ваше пожелание относилось не именно к данному видеоуроку, а в целом
MsgBox("Сегодня" 4 UserForm1.ComboBox1.Value 4 " " 4 UserForm1.ComboBox2.Value 4 " " 4 UserForm1.ComboBox3.Value ) -это команда не реализуется. Что это за 4? Изменил таким образом: MsgBox (UserForm1.ComboBox1.Value + UserForm1.ComboBox2.Value + UserForm1.ComboBox3.Value). Так сообщение показывает.
Здравствуйте. Команда выглядит иначе, чем вы написали. В примере используется:
MsgBox ("Сегодня " & UserForm1.ComboBox1.Value & " " & UserForm1.ComboBox2.Value & " " & UserForm1.ComboBox3.Value)
То есть, для объединения текстовых строк применяется символ амперсанда "&"
Спасибо. Исправил.
Добрый день.
Большое спасибо за подробное видео.
Очень помогло.
Но есть вопросы:
1. Как правильно прописать RowSource, если данные находятся в другом файле?
2. Как вывести выбранное значение в конкретную ячейку?
Добрый день! Можно ли в combobox добавить данные из массива ячеек, количество ячеек в массиве высчитывается в другой функции
aProd = Range("Продукт") 'в массив aProd забираем значения из ранее поименованного диапазона "Продукт"
'циклом добавляем значения массива в комбобокс
For i = 1 To UBound(aProd)
UserForm1.ComboBox1.AddItem aProd(i, 1)
Next
@@lalaroo104 Благодарю Вас!!!
урок мне очень понравилась, но можно показать 3 связной выпадающие ячеек, заранее благадарю.
+Hovik Ghambaryan Здравствуйте. Я не совсем понял ваш вопрос
Добрый день! Спасибо за урок! Как можно сделать так, чтобы в каждом месяце было правильное число дней, соответственно году?
+Дмитрий Пчелинцев В этом случае список, который соответствует дням месяца, нужно заполнять не в момент активации формы, а когда пользователь выбирает месяц из второго списка. То есть, "привязать" формирование списка с днями месяца к событию выбора месяца из второго списка. Выбрав месяц, вы выполняете проверку с целью определить количество дней в нем, а затем заполняем программно первый список нужным количеством дней.
Можно например так
Private Sub ComboBox2_Change()
Dim s As String
If (ComboBox2.Value = ComboBox2.List(3)) Or (ComboBox2.Value = ComboBox2.List(5)) _
Or (ComboBox2.Value = ComboBox2.List(8)) Or (ComboBox2.Value = ComboBox2.List(10)) Then
If ComboBox1.Value = 31 Then ComboBox1.Value = 30
s = "Лист1!A1:A30"
ComboBox1.RowSource = s
ElseIf ComboBox2.Value = ComboBox2.List(1) Then
If (ComboBox3.Value Mod 4) = 0 Then
If ComboBox1.Value > 29 Then ComboBox1.Value = 29
s = "Лист1!A1:A29"
ComboBox1.RowSource = s
Else
If ComboBox1.Value > 28 Then ComboBox1.Value = 28
s = "Лист1!A1:A28"
ComboBox1.RowSource = s
End If
Else
s = "Лист1!A1:A31"
ComboBox1.RowSource = s
End If
End Sub
Private Sub ComboBox3_Change()
Dim s As String
If ComboBox2.Value = ComboBox2.List(1) Then
If (ComboBox3.Value Mod 4) = 0 Then
If ComboBox1.Value > 29 Then ComboBox1.Value = 29
s = "Лист1!A1:A29"
ComboBox1.RowSource = s
Else
If ComboBox1.Value > 28 Then ComboBox1.Value = 28
s = "Лист1!A1:A28"
ComboBox1.RowSource = s
End If
End If
End Sub
А есть какой-то способ сделать выпадающий список разноцветным? Допустим Январь, Февраль (красного цвета) Март, Апрель (Синего цвета) и так далее..
Здравствуйте. Именно в выпадающем списке такой возможности нет