Страницы: 1
RSS
Выпадающий элемент формы "Список" - по двойному щелчку по ячейке.
 
Здравствуйте люди.

Есть макрос - создания выпадающего списка по двойному клику.
По двойному клику - в любой ячейке серого столбца - появляется выпадающий список.


Но сейчас окно этого списка - слишком уж короткое. Если список длинный - это настоящее мучение его прокручивать

Подскажите - как по двойному щелчку - размещать в ячейке серого столбца - элемент формы "Список" (вместо того списка, который выпадает сейчас) ?
(Элемент формы "Список" - это тот, который находится в меню Разработчик ->  "элементы управления формы" )
 
Если правильно понял. По двойному щелчку в ячейке в диапазоне 'D2:D10' Ваш Список будет подтягиваться в соседнюю ячейку справа
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, [D2:D10]) Is Nothing Then
       Cancel = True
       With Me.Shapes("List Box 2")
        .Top = Target.Offset(, 1).Top
        .Left = Target.Offset(, 1).Left
       End With
    End If
End Sub
Изменено: Sanja - 02.03.2018 23:29:26
Согласие есть продукт при полном непротивлении сторон
 
Sanja, не совсем, но уже близко.

Список должен не перемещаться  - а исчезать и отображаться при двойном щелчке по ячейке.
Вывод результата нужен  - не в ячейку H2, а в ту ячейку, по которой щелкнули.
Изменено: OlegSmirnov - 02.03.2018 23:54:26
 
С элементом ActiveX
Код
Public iTarget As Range

Private Sub ListBox1_Change()
If Not iTarget Is Nothing Then
    With Me.ListBox1
        .Visible = False
        iTarget = .Value
    End With
End If
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, [D2:D10]) Is Nothing And Target.Count = 1 Then
       Application.ScreenUpdating = False
       Cancel = True
       Set iTarget = Target
       With Me.ListBox1
        .Top = Target.Top
        .Left = Target.Left
        .Visible = True
       End With
    End If
Application.ScreenUpdating = True
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, подскажите - как сделать небольшую задержку - между двойным щелчком и появлением списка ?

( Потому что список так быстро появляется, что успевает распознать - тот двойной щелчок (который этот список вызвал) - и тут же моментально сам вбивает оказавшееся под курсором число из списка. )
 
Цитата
OlegSmirnov написал: как сделать небольшую задержку
Задержка примерно в 0,3 секунды, но я все-же делал-бы справа от целевой ячейки
Согласие есть продукт при полном непротивлении сторон
 
Sanja, все работает нормально.
Спасибо.
Страницы: 1
Наверх