Хорошо, я думаю, что вижу, чего вы пытаетесь достичь.
К сожалению, нет, комбинированный список не работает так. Можно было бы использовать некоторую очень сложную обработку сообщений Win32, чтобы взломать ее, но в конце дня элементы управления ActiveX конфигурируются настолько, насколько они задуманы, и выпадающая часть выпадающего списка не собирается запустить событие для того, что вы пытаетесь сделать.
Ваши пользователи также не ожидают, что комбо-бокс будет вести себя таким же образом, поэтому реализация, которая привела бы к проблеме обнаружения UX / функций.
Это очень похоже на проблему XY: проблема real заключается в том, что вы хотите, чтобы у каждого выпадающего элемента было соответствующее описание, чтобы пользователь знал, что он собирается выбрать, прежде чем выбрать это.
Оказывается, комбинированный список может делать это изначально.
Я не знаю, как вы заполняете свой комбинированный список, но если вы можете хранить свои данные (включая описания) в двухмерном массиве (вы можете получить их бесплатно, если данные поступают с рабочего листа Range
) Вы можете настроить комбинированный список для отображения его элементов в 2 столбцах и даже скрыть бессмысленный для пользователя числовой код, если хотите:
Dim items
ReDim items(1 To 3, 1 To 2)
items(1, 1) = 1
items(1, 2) = "Description for Item 1"
items(2, 1) = 2
items(2, 2) = "Description for Item 2"
items(3, 1) = 3
items(3, 2) = "Description for Item 3"
ComboBox1.List = items
ComboBox1.ColumnCount = 2
'ComboBox1.ColumnWidths = "30,70"
ComboBox1.ColumnWidths = "0,70"
С ColumnWidths = "0,70"
вы получите это:
![userform combobox showing only descriptions](https://i.stack.imgur.com/NfTES.png)
И с ColumnWidths = "30,70"
вы получите это:
![userform combobox showing codes and descriptions](https://i.stack.imgur.com/7trNB.png)
* * * * * * * * * * * * * * * * * * * * * * * * *
в поле со списком будет тем, что содержится в первом столбце, даже если он скрыт: *1030*
![label showing selected value in the combobox](https://i.stack.imgur.com/m3zoE.png)