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

Вход

Регистрация

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

 

= Мир MS Excel/Вызов выпадающего списка в заданном диапазоне - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вызов выпадающего списка в заданном диапазоне (Макросы/Sub)
Вызов выпадающего списка в заданном диапазоне
Kamikadze_N Дата: Понедельник, 16.05.2016, 16:25 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Добрый день, в определенном столбце необходимо сделать выпадающий список через форму. Т.е при нажатии на любую ячейку указанного столбца открывается выпадающий список, в нем выбирается необходимое значение и при нажатии клавиши энтер это значение должно отображаться в той ячейке которая и вызвала форму. Подскажите пожалуйста как заставить форму отобразить выбранное значение в выпадающем списке в ячейке. Пример во вложении.
К сообщению приложен файл: 0820495.xlsm(17Kb)
 
Ответить
СообщениеДобрый день, в определенном столбце необходимо сделать выпадающий список через форму. Т.е при нажатии на любую ячейку указанного столбца открывается выпадающий список, в нем выбирается необходимое значение и при нажатии клавиши энтер это значение должно отображаться в той ячейке которая и вызвала форму. Подскажите пожалуйста как заставить форму отобразить выбранное значение в выпадающем списке в ячейке. Пример во вложении.

Автор - Kamikadze_N
Дата добавления - 16.05.2016 в 16:25
Roman777 Дата: Понедельник, 16.05.2016, 16:42 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 780
Репутация: 88 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Kamikadze_N,
так
[vba]
Код
Private Sub ComboBox1_Change()
Selection = UserForm1.ComboBox1
End Sub
[/vba]

или так:

[vba]
Код
Private Sub UserForm_Terminate()
Selection = UserForm1.ComboBox1
End Sub
[/vba]
К сообщению приложен файл: 4544162.xlsm(15Kb)


Много чего не знаю!!!!
 
Ответить
СообщениеKamikadze_N,
так
[vba]
Код
Private Sub ComboBox1_Change()
Selection = UserForm1.ComboBox1
End Sub
[/vba]

или так:

[vba]
Код
Private Sub UserForm_Terminate()
Selection = UserForm1.ComboBox1
End Sub
[/vba]

Автор - Roman777
Дата добавления - 16.05.2016 в 16:42
buchlotnik Дата: Понедельник, 16.05.2016, 16:45 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3004
Репутация: 839 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
а я бы не форму использовал, а listbox [vba]
Код
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveCell = ListBox1
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("D:D")) Is Nothing Then
        ListBox1.Visible = True
        ListBox1.Top = ActiveCell.Offset(1, 1).Top
        ListBox1.Left = ActiveCell.Offset(1, 1).Left
    Else
                ListBox1.Visible = False
    End If
End Sub
[/vba]
К сообщению приложен файл: 4878406.xlsm(22Kb)


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru
 
Ответить
Сообщениеа я бы не форму использовал, а listbox [vba]
Код
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ActiveCell = ListBox1
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("D:D")) Is Nothing Then
        ListBox1.Visible = True
        ListBox1.Top = ActiveCell.Offset(1, 1).Top
        ListBox1.Left = ActiveCell.Offset(1, 1).Left
    Else
                ListBox1.Visible = False
    End If
End Sub
[/vba]

Автор - buchlotnik
Дата добавления - 16.05.2016 в 16:45
Karataev Дата: Понедельник, 16.05.2016, 16:45 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 887
Репутация: 334 ±
Замечаний: 0% ±

Excel
Запуск макроса по нажатию клавиши Enter. Вставьте этот код в модуль UserForm.
[vba]
Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        ActiveCell.Value = Me.ComboBox1.Value
        Unload Me
    End If
End Sub
[/vba]




Сообщение отредактировал Karataev - Понедельник, 16.05.2016, 16:46
 
Ответить
СообщениеЗапуск макроса по нажатию клавиши Enter. Вставьте этот код в модуль UserForm.
[vba]
Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        ActiveCell.Value = Me.ComboBox1.Value
        Unload Me
    End If
End Sub
[/vba]

Автор - Karataev
Дата добавления - 16.05.2016 в 16:45
Kamikadze_N Дата: Понедельник, 16.05.2016, 16:46 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Roman777, а можно сделать так что-бы данные вносились и форма закрывалась нажатием клавиши энтер?
 
Ответить
СообщениеRoman777, а можно сделать так что-бы данные вносились и форма закрывалась нажатием клавиши энтер?

Автор - Kamikadze_N
Дата добавления - 16.05.2016 в 16:46
Kamikadze_N Дата: Понедельник, 16.05.2016, 16:48 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
buchlotnik, если список более 150 продуктов то лист бокс вообще не вариант будет... поэтому и используется выпадающий список
 
Ответить
Сообщениеbuchlotnik, если список более 150 продуктов то лист бокс вообще не вариант будет... поэтому и используется выпадающий список

Автор - Kamikadze_N
Дата добавления - 16.05.2016 в 16:48
Kamikadze_N Дата: Понедельник, 16.05.2016, 16:52 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Karataev, спасибо, то что нужно! А можно зафиксировать юзерформ что бы она, открывалась справа от выделенной ячейки или ниже?
 
Ответить
СообщениеKarataev, спасибо, то что нужно! А можно зафиксировать юзерформ что бы она, открывалась справа от выделенной ячейки или ниже?

Автор - Kamikadze_N
Дата добавления - 16.05.2016 в 16:52
Karataev Дата: Понедельник, 16.05.2016, 16:57 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 887
Репутация: 334 ±
Замечаний: 0% ±

Excel
Kamikadze_N, у меня нет такого макроса, я не знаю, как это сделать.
Если для конкретного случая, когда:
1) окно всегда развернуто
2) одна версия Excel
3) не планируется добавлять группировку или еще что-нибудь отображать слева
то можно попробовать сделать. Думаю, что еще монитор может повлиять.


 
Ответить
СообщениеKamikadze_N, у меня нет такого макроса, я не знаю, как это сделать.
Если для конкретного случая, когда:
1) окно всегда развернуто
2) одна версия Excel
3) не планируется добавлять группировку или еще что-нибудь отображать слева
то можно попробовать сделать. Думаю, что еще монитор может повлиять.

Автор - Karataev
Дата добавления - 16.05.2016 в 16:57
Kamikadze_N Дата: Понедельник, 16.05.2016, 17:04 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Расположение окна не принципиально, подскажите пожалуйста какой макрос использовать, если в выпадающем списке нет искомого элемента то он автоматически заносился в него? Т.е если я ищу апельсины и их не находит то соответственно при нажатии клавиши энтер они отобразятся в ячейке, но как сделать так что бы они занеслись в именованный диапазон?
К сообщению приложен файл: 0706603.xlsm(18Kb)


Сообщение отредактировал Kamikadze_N - Понедельник, 16.05.2016, 17:15
 
Ответить
СообщениеРасположение окна не принципиально, подскажите пожалуйста какой макрос использовать, если в выпадающем списке нет искомого элемента то он автоматически заносился в него? Т.е если я ищу апельсины и их не находит то соответственно при нажатии клавиши энтер они отобразятся в ячейке, но как сделать так что бы они занеслись в именованный диапазон?

Автор - Kamikadze_N
Дата добавления - 16.05.2016 в 17:04
buchlotnik Дата: Понедельник, 16.05.2016, 17:05 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3004
Репутация: 839 ±
Замечаний: 0% ±

2010, 2013, 2016 RUS / ENG
Kamikadze_N, можно и комбобоксом
К сообщению приложен файл: 5928970.xlsm(22Kb)


каждому For - Next!
платная помощь:
ЯД: 410012595572239
buchlotnik@mail.ru
 
Ответить
СообщениеKamikadze_N, можно и комбобоксом

Автор - buchlotnik
Дата добавления - 16.05.2016 в 17:05
Kamikadze_N Дата: Понедельник, 16.05.2016, 17:19 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Karataev, извиняюсь за назойливость, не могли бы вы подсказать что добавить в ваш скрип что бы форма закрывалась без внесения данных в ячейку при нажатии клавиши ESC?
 
Ответить
СообщениеKarataev, извиняюсь за назойливость, не могли бы вы подсказать что добавить в ваш скрип что бы форма закрывалась без внесения данных в ячейку при нажатии клавиши ESC?

Автор - Kamikadze_N
Дата добавления - 16.05.2016 в 17:19
Karataev Дата: Понедельник, 16.05.2016, 17:25 | Сообщение № 12
Группа: Проверенные
Ранг: Ветеран
Сообщений: 887
Репутация: 334 ±
Замечаний: 0% ±

Excel
что бы форма закрывалась без внесения данных в ячейку при нажатии клавиши ESC?

[vba]
Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 27 Then Unload Me
    If KeyCode = 13 Then
        ActiveCell.Value = Me.ComboBox1.Value
        Unload Me
    End If
End Sub
[/vba]


 
Ответить
Сообщение
что бы форма закрывалась без внесения данных в ячейку при нажатии клавиши ESC?

[vba]
Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 27 Then Unload Me
    If KeyCode = 13 Then
        ActiveCell.Value = Me.ComboBox1.Value
        Unload Me
    End If
End Sub
[/vba]

Автор - Karataev
Дата добавления - 16.05.2016 в 17:25
Kamikadze_N Дата: Понедельник, 16.05.2016, 17:28 | Сообщение № 13
Группа: Пользователи
Ранг: Участник
Сообщений: 75
Репутация: 6 ±
Замечаний: 0% ±

Excel 2010
Karataev, спасибо!
 
Ответить
СообщениеKarataev, спасибо!

Автор - Kamikadze_N
Дата добавления - 16.05.2016 в 17:28
Karataev Дата: Понедельник, 16.05.2016, 17:49 | Сообщение № 14
Группа: Проверенные
Ранг: Ветеран
Сообщений: 887
Репутация: 334 ±
Замечаний: 0% ±

Excel
как сделать так что бы они занеслись в именованный диапазон?

У меня какой-то глюк. В Excel 2016 пытаюсь вставить строку в умную таблицу с помощью макроса, Excel "вылетает".
В Excel 2010 такого глюка нет. Вот код, в котором происходит глюк:
[vba]
Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    Dim lo As ListObject

    If KeyCode = 27 Then Unload Me
    If KeyCode <> 13 Then Exit Sub

    Set lo = ActiveSheet.ListObjects("Таблица1")
    If WorksheetFunction.CountIf(lo.DataBodyRange.Columns(1), Me.ComboBox1.Value) = 0 Then
        lo.ListRows.Add
    End If

    ActiveCell.Value = Me.ComboBox1.Value

    Unload Me

End Sub
[/vba]
Вылетает в строке:
[vba]
Код
       lo.ListRows.Add
[/vba]
Пока не знаю, что Вам предложить.




Сообщение отредактировал Karataev - Понедельник, 16.05.2016, 18:07
 
Ответить
Сообщение
как сделать так что бы они занеслись в именованный диапазон?

У меня какой-то глюк. В Excel 2016 пытаюсь вставить строку в умную таблицу с помощью макроса, Excel "вылетает".
В Excel 2010 такого глюка нет. Вот код, в котором происходит глюк:
[vba]
Код
Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

    Dim lo As ListObject

    If KeyCode = 27 Then Unload Me
    If KeyCode <> 13 Then Exit Sub

    Set lo = ActiveSheet.ListObjects("Таблица1")
    If WorksheetFunction.CountIf(lo.DataBodyRange.Columns(1), Me.ComboBox1.Value) = 0 Then
        lo.ListRows.Add
    End If

    ActiveCell.Value = Me.ComboBox1.Value

    Unload Me

End Sub
[/vba]
Вылетает в строке:
[vba]
Код
       lo.ListRows.Add
[/vba]
Пока не знаю, что Вам предложить.

Автор - Karataev
Дата добавления - 16.05.2016 в 17:49
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вызов выпадающего списка в заданном диапазоне (Макросы/Sub)
Страница 1 из 11
Поиск:

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