VBA Excel устанавливает фокус на раскрывающемся списке

Я пытаюсь установить фокус в Excel через код VBA в раскрывающемся списке. Я пробовал разные вещи, которые приносили нежелательные результаты. Элемент ниже - единственный, на котором я должен сосредоточиться на раскрывающемся списке, но он выбирает раскрывающийся список, как если бы он был выбран под разработчиком (с изменением размера точек), тогда как я просто хочу, чтобы он указывал на ячейку, если это возможно . Я не хочу, чтобы пользователь мог изменить размер раскрывающегося списка или что-то еще, и он заблокирован, поэтому странно, что он это сделал.

ActiveSheet.Shapes("DropDown1").Select

person karlstackoverflow    schedule 06.03.2012    source источник


Ответы (2)


Попробуй это

Sub TestFocus()
    Dim ws As Worksheet
    Dim dd As DropDown

    Set ws = ActiveSheet
    Set dd = ws.Shapes("DropDown1").OLEFormat.Object

    dd.TopLeftCell.Select
End Sub
person chris neilsen    schedule 06.03.2012
comment
Кажется, это выбирает только верхнюю левую ячейку. Я не думаю, что на самом деле можно поместить фокус в раскрывающийся список. Спасибо. - person karlstackoverflow; 07.03.2012
comment
На самом деле это возможно. Смотрите ответ, который я разместил. - person ChrisB; 08.02.2020

Поздний ответ, но, поскольку никто на самом деле не ответил на вопрос оператора, я решил опубликовать это. Существует скрытый метод .Activate для объектов OLE, который не отображается в Intellisense при вводе.

Этот код активирует поле со списком, предполагая, что поле со списком находится на активном листе.

Sub Test()
    Dim oleObj As OLEObject
    Set oleObj = Excel.ActiveSheet.OLEObjects.Item("TempCombo")

    oleObj.Activate
End Sub
person ChrisB    schedule 07.02.2020