Доброго времени суток. Уважаемые Гуру Excel, без Вашей помощи не обойтись перебрал (перечитал) много информации на различных форумах, но нужной не нашел... Суть задачи. Необходим макрос, который бы автоматически раскрывал выпадающие списки в ячейках соответствующих таблиц на листе в книге при выделении (активации) таковых. Что бы не приходилось сначала выделить ячейку, а потом ещё нажать на кнопочку (справа) для раскрытия самого списка.
ЗЫ. Таблиц на листе в книге ооочень много и от постоянного кликанья мышкой по ячейкам уже пальцы болят…
ЗЫ.2. Размерность таблиц не одинакова, столбцы с выпадающими списками находятся в разных столбцах листа: Таблица1 -столбец B, Таблица2- столбец Е и тд. Все таблицы находятся на одном листе.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count = 1 Then
On Error GoTo Exi
If Target.Validation.Type = 3 And Target.Validation.InCellDropdown Then
SendKeys "%{down}"
End If
End If
Exi:
End Sub
БМВ, Спасибо. Работает. Один минус только, видимо я забыл уточнить, выпадающие списки в таблицах существуют не только в одинарных ячейках, но и в объединенных (2-х или 3-х смежных по горизонтали). Ваше решение для объединенных ячеек не работает
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Exi
If Target(1).MergeArea.Validation.Type = 3 Then
SendKeys "%{down}"
End If
Exi:
End Sub
_Boroda_, Александр, Либо мой пример не подходит к коду, либо наоборот :-) (B3:B4 или E7:F7 объединил и не работает) , но меня больше смущает факт возможности выделить несколько ячеек. что тогда в этом случае. Если в первом отсекается сразу, то убрав If Target.Count = 1 Then чехарда получается. Но лучше выслушать ТС и его пример получить.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Exi
If Target(1).MergeArea(1).Validation.Type = 3 Then
SendKeys "%{down}"
End If
Exi:
End Sub
теперь ок. но Validation.InCellDropdown я б оставил. Конечно редко кто снимает, но для универсальности лучше . А то получается что выпадает пустышка
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Exi
' hh = Target(1).Address
With Target(1).MergeArea(1).Validation
If .Type = 3 And .InCellDropdown Then
SendKeys "%{down}"
End If
End With
Exi:
End Sub