Как выбрать начальное значение в выпадающем списке в VBA? - PullRequest
1 голос
/ 03 февраля 2020

Я создал раскрывающийся список в указанной ячейке c и присвоил им значения. Однако я не хочу показывать пустое значение по умолчанию. Какой код следует использовать, чтобы установить значение по умолчанию раскрывающегося списка на значение 500 (а не значения позиций раскрывающегося списка)? Есть эта ссылка Могу ли я установить в ComboBox Excel значение по умолчанию? , которое было дано мне ранее, но это не то, что я хочу, потому что я не смотрю список проверки. Я попытался -

With ActiveSheet.Shapes("Combo Box 1").ControlFormat
    .value = 500
End With

, но это не работает. Есть ли способ сделать это?

1 Ответ

1 голос
/ 03 февраля 2020

Сначала немного сложнее, чем я думал. Если вы говорите о Form элементе управления вместо ActiveX, вы хотите установить свойство .Text (так же, как в связанном ответе).

Однако, как только вы установите свойство .Text, вы в конечном итоге вы меняете значения, но в вашем ComboBox нет визуальных изменений. Один из способов преодолеть это - .OnAction, ссылающийся на Sub, чтобы снова изменить это свойство .Text в соответствии с .Value. И поскольку .Value в свою очередь вернет Index, мы можем использовать его в свойстве .List.

Ниже приведен пример кода, чтобы повторить то, о чем я говорю:

Sub Test()

Dim Bx As Object

'Add ComboBox for testing
Set Bx = Worksheets("Sheet1").DropDowns.Add(0, 0, 100, 15)
Bx.Name = "Combo Box 1"

'Add values to box for testing
Bx.AddItem 100
Bx.AddItem 200
Bx.AddItem 300
Bx.AddItem 400
Bx.AddItem 500

'Create the possibility to change .Text property according to .Value
Bx.OnAction = "StandardVal"

'Set standard value
Bx.Text = 500

End Sub

Sub StandardVal()

With Worksheets("Sheet1").DropDowns("Combo Box 1")
    .Text = .List(.Value)
End With

End Sub

В случае OP он может установить свойство .Text вместо .Value и назначить макрос (например, приведенный выше пример макроса "StandardVal") для ComboBox

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...