Добрый день, в определенном столбце необходимо сделать выпадающий список через форму. Т.е при нажатии на любую ячейку указанного столбца открывается выпадающий список, в нем выбирается необходимое значение и при нажатии клавиши энтер это значение должно отображаться в той ячейке которая и вызвала форму. Подскажите пожалуйста как заставить форму отобразить выбранное значение в выпадающем списке в ячейке. Пример во вложении.
Добрый день, в определенном столбце необходимо сделать выпадающий список через форму. Т.е при нажатии на любую ячейку указанного столбца открывается выпадающий список, в нем выбирается необходимое значение и при нажатии клавиши энтер это значение должно отображаться в той ячейке которая и вызвала форму. Подскажите пожалуйста как заставить форму отобразить выбранное значение в выпадающем списке в ячейке. Пример во вложении.Kamikadze_N
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]
а я бы не форму использовал, а 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
Запуск макроса по нажатию клавиши 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]
Запуск макроса по нажатию клавиши 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
Kamikadze_N, у меня нет такого макроса, я не знаю, как это сделать. Если для конкретного случая, когда: 1) окно всегда развернуто 2) одна версия Excel 3) не планируется добавлять группировку или еще что-нибудь отображать слева то можно попробовать сделать. Думаю, что еще монитор может повлиять.
Kamikadze_N, у меня нет такого макроса, я не знаю, как это сделать. Если для конкретного случая, когда: 1) окно всегда развернуто 2) одна версия Excel 3) не планируется добавлять группировку или еще что-нибудь отображать слева то можно попробовать сделать. Думаю, что еще монитор может повлиять.Karataev
Расположение окна не принципиально, подскажите пожалуйста какой макрос использовать, если в выпадающем списке нет искомого элемента то он автоматически заносился в него? Т.е если я ищу апельсины и их не находит то соответственно при нажатии клавиши энтер они отобразятся в ячейке, но как сделать так что бы они занеслись в именованный диапазон?
Расположение окна не принципиально, подскажите пожалуйста какой макрос использовать, если в выпадающем списке нет искомого элемента то он автоматически заносился в него? Т.е если я ищу апельсины и их не находит то соответственно при нажатии клавиши энтер они отобразятся в ячейке, но как сделать так что бы они занеслись в именованный диапазон?Kamikadze_N
Karataev, извиняюсь за назойливость, не могли бы вы подсказать что добавить в ваш скрип что бы форма закрывалась без внесения данных в ячейку при нажатии клавиши ESC?
Karataev, извиняюсь за назойливость, не могли бы вы подсказать что добавить в ваш скрип что бы форма закрывалась без внесения данных в ячейку при нажатии клавиши ESC?Kamikadze_N
что бы форма закрывалась без внесения данных в ячейку при нажатии клавиши 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
что бы форма закрывалась без внесения данных в ячейку при нажатии клавиши 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
как сделать так что бы они занеслись в именованный диапазон?
У меня какой-то глюк. В 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
как сделать так что бы они занеслись в именованный диапазон?
У меня какой-то глюк. В 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