Я использую Excel 2010, Windows 10, с VBA.У меня есть функция, которая запускается при нажатии элемента в элементе управления ActiveX ListBox
.Проблема в том, что если вы щелкнете по списку, я спрашиваю, уверены ли они, хотят ли они изменить выбор.Если вы нажмете «да», я продолжу, но если вы скажете «нет», я верну выделение обратно к тому, что было раньше.
Таким образом, проблема заключается в том, что когда я программно устанавливаю выбор списка обратно к предыдущемуselection my function будет повторно запускать код, который запускается, если пользователь щелкает элемент в окне списка ... что я не хочу.
У кого-нибудь есть лучший способ остановить окно спискавыделение и изменить его обратно на старое, не вызывая событие выбора в окне списка?
Прототип функции для щелчка по списку
lsQuestions_Click()
Код для установки поля спискаselection
'Prototype: setListBoxSelection(query As String, listBoxName As String) As Boolean
' Purpose: Set listbox selection based on text
Public Function setListBoxSelection(query As String, listBoxName As String) As Boolean
Dim lsBox As MSForms.listBox
Set lsBox = Workbooks(mainFile).Worksheets(entrySheet).OLEObjects(listBoxName).Object
Dim I As Integer
For I = 0 To lsBox.ListCount - 1
If lsBox.List(I) = query Then
lsBox.Selected(I) = True
setListBoxSelection = True
Exit Function
End If
Next I
setListBoxSelection = False
End Function
Пожалуйста, обратите внимание, что я думаю, что строка кода ниже - это то, что вызывает мое событие щелчка, которое я не хочу.
lsBox.Selected(I) = True