powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставить в ячейку выпадающий список
11 сообщений из 11, страница 1 из 1
Вставить в ячейку выпадающий список
    #32917684
vera_t
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здраствуйте, может кто - нибудь знает как вставить в ячейку Excel выпадающий список. Стандартный объект ComboBox не подходит так как он внедряется на лист а не в ячейку. Нужно чтобы при щелчке на ячейке появлялся список значений для выбора.
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32917757
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встать на ячейку
Данные-)Проверка-) в типе данных выбрать Список, указать диапозон и...
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32917847
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
\'Демонстрация добавления списка в любую ячейку Excel\'при выделении ячейки на первом листе книги в ней появляется кнопка,\'при нажатии на которую появляется список\'подробности в справке VBA\'добавить в проект Excel модуль "modList" и класс "clsEvent"\'запустить InitList\'_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\'\'Код модуля modListPublic lst As ShapeDim cEvent As clsEventPublic Sub InitList()    With Worksheets(1)        Set cmd = .Shapes.AddFormControl(xlButtonControl, 10, 10, 10, 10)        Set lst = .Shapes.AddFormControl(xlListBox, 100, 10, 40, 40)    End With    cmd.OnAction = "cmdClick"        cmd.Select    Selection.Characters.Text = Chr$(128)    With Selection.Characters(Start:=1, Length:=1).Font        .Name = "Wingdings 3"        .Superscript = True        .ColorIndex = 11    End With    cmd.Visible = False    lst.OnAction = "lstClick"    lst.Visible = False    lst.ControlFormat.AddItem "Красный"    lst.ControlFormat.AddItem "Зелёный"    lst.ControlFormat.AddItem "Синий"    Set cEvent = New clsEvent    Set cEvent.App = ApplicationEnd SubPublic Sub cmdClick()    lst.Top = Selection.Top + Selection.Height    lst.Left = Selection.Left    lst.Width = Selection.Width    lst.Visible = TrueEnd SubPublic Sub lstClick()    Select Case lst.ControlFormat.List(lst.ControlFormat.ListIndex)    Case "Красный"        Selection.Interior.ColorIndex = 3    Case "Зелёный"        Selection.Interior.ColorIndex = 10    Case "Синий"        Selection.Interior.ColorIndex = 5    End Select    lst.Visible = FalseEnd Sub\'_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/\'\'код класса clsEventPublic WithEvents App As ApplicationPrivate Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)    cmd.Height = Target.Height - 2    cmd.Width = cmd.Height    cmd.Left = Target.Left + Target.Width - cmd.Width - 1    cmd.Top = Target.Top + 1    cmd.Visible = True    lst.Visible = FalseEnd Sub
Как отформатирован этот код?
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32917859
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл добавить объявление cmd
'Код модуля modList
Public cmd As Shape
Public lst As Shape
Dim cEvent As clsEvent
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32917994
MX-ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to marvan

Очень интересный вариант !
Кажется то что я давно искал...
Спасибо !
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32918479
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для загрузки значений списка из диапазона расположенного в книге:
Код: plaintext
1.
2.
    For i =  1  To Range("ListSrc").Rows.Count
        lst.ControlFormat.AddItem Range("ListSrc").Cells(i,  1 )
    Next
список значений набивается где надо, выделяется и меню
вставка / имя / присвоить
там вводим "ListSrc" и жмём "OK"

Для ввода значений из списка в ячейку:
Код: plaintext
1.
2.
3.
4.
5.
    Public Sub lstClick()
    If lst.ControlFormat.ListIndex <>  0  Then
        Selection = lst.ControlFormat.List(lst.ControlFormat.ListIndex)
    End If
    lst.Visible = False
End Sub
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32920595
MX-ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvanДля загрузки значений списка из диапазона расположенного в книге:
Код: plaintext
1.
2.
    For i =  1  To Range("ListSrc").Rows.Count
        lst.ControlFormat.AddItem Range("ListSrc").Cells(i,  1 )
    Next
список значений набивается где надо, выделяется и меню
вставка / имя / присвоить
там вводим "ListSrc" и жмём "OK"

Для ввода значений из списка в ячейку:
Код: plaintext
1.
2.
3.
4.
5.
    Public Sub lstClick()
    If lst.ControlFormat.ListIndex <>  0  Then
        Selection =List(lst.ControlFormat.ListIndex)
    End If
    lst.Visible = False
End Sub


Все идет нормально но не дает указать сколько строк
в выпадающем списке - ругается
lst.ControlFormat.DropDownLines = 24
- не проходит
хотя в списке их больше 24
может есть обходной путь ?
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32920700
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
высоту списка можно задать прямо
Код: plaintext
lst.Height =  100 
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32920987
MX-ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvanвысоту списка можно задать прямо
Код: plaintext
lst.Height =  100 


точно !
с меня бутыль
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32965459
Lanky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень интересно, но вот не совсем понятен что есть за тип

Код: plaintext
Dim cEvent As clsEvent

У меня система ругается, считая этот тип Used Defined type not defined
...
Рейтинг: 0 / 0
Вставить в ячейку выпадающий список
    #32966021
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
clsEvent - это класс
- его код в самом конце моего примера.
- таким образом в проект надо добавить модуль modList и класс clsEvent - всё это написано в примечании.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вставить в ячейку выпадающий список
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]