Excel ActiveX Listbox не включен при открытии файла
Я пытаюсь выяснить причудливую ситуацию.
У меня есть рабочая тетрадь с множеством листов. На одном листе у меня есть один список ActiveX (CTOverview.Listbox1). На втором листе у меня есть всего три списка (от CTSelected.Listbox1 до Listbox3). Я использую запрос для заполнения Listbox1 на обоих листах одними и теми же данными. Код для этого ниже:
strSQL = "Select Distinct [Region] From [UniqueCTList$] Order by [Region]"
closeRS
OpenDB
' initialize listboxes
CTSelect.ListBox1.Clear
CTSelect.ListBox2.Clear
CTSelect.ListBox3.Clear
CTOverview.ListBox1.Clear
' initialize with entire division value
CTSelect.ListBox1.AddItem "Entire Division"
CTOverview.ListBox1.AddItem "Entire Division"
' initialize selected Tech
CTData.Range("CT_Selected") = ""
' populate listboxes using recordset
rs.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
If rs.RecordCount > 0 Then
Do While Not rs.EOF
CTOverview.ListBox1.AddItem rs.Fields(0)
CTSelect.ListBox1.AddItem rs.Fields(0)
rs.MoveNext
Loop
Else
MsgBox "I was not able to find any unique Regions.", vbCritical + vbOKOnly
Exit Sub
End If
Этот код работает прекрасно (не мой код - я получил его из промежутков). Оба LIstbox1 's на обоих листах загружаются со списком отдельных регионов. Однако я не могу получить CTOverview.Listbox1, чтобы ответить на любой ввод, пока я не 'мы выбрали что-то из CTSelected.Listbox1. Как только я это сделаю, оба Listbox1 'Они работают нормально и никак не связаны, по крайней мере, насколько я могу судить.
Я пытался закрыть набор записей после того, какмы заполнили два списка1 'с (без эффекта). Я попытался выбрать элемент по умолчанию в CTOverview.Listbox1 (без эффекта).
На всякий случай, вот мой код, чтобы открыть / закрыть набор записей:
Public Sub OpenDB()
If cnn.State = adStateOpen Then cnn.Close
cnn.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}; _
DBQ=" & ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name
cnn.Open
End Sub
Public Sub closeRS()
If rs.State = adStateOpen Then rs.Close
rs.CursorLocation = adUseClient
End Sub
Насколько я могу судить, я должен снять фокус с листа CTOverview. Если я нажимаю на любой другой лист, а затем возвращаюсь к CTOverview, Listbox1, кажется, работает. Это проблема, потому что CTOverview должен быть моим стартовым листом.
Есть идеи, почему это может происходить? Я'Я вытаскиваю свои волосы, пытаясь понять это. Любое понимание будет высоко ценится.