Excel ActiveX Listbox nie jest włączony przy otwartym pliku
Próbuję znaleźć dziwną sytuację.
Mam skoroszyt z wieloma arkuszami. Na jednym arkuszu mam jedno pole listy ActiveX (CTOverview.Listbox1). Na drugim arkuszu mam łącznie trzy listy list (CTSelected.Listbox1 przez Listbox3). Używam zapytania do wypełnienia Listbox1 na obu arkuszach tymi samymi danymi. Kod tego jest poniżej:
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
Ten kod działa pięknie (nie mój kod - dostałem go z interttes). Oba LIstbox1 na obu arkuszach ładują się z listą odrębnych regionów. Jednak nie mogę uzyskać CTOverview.Listbox1, aby odpowiedzieć na jakiekolwiek dane wejściowe, dopóki nie wybiorę czegoś z CTSelected.Listbox1. Kiedy to zrobię, obie listy Listbox1 działają normalnie i nie są w inny sposób połączone, przynajmniej tak daleko, jak to możliwe.
Próbowałem zamknąć zestaw rekordów po wypełnieniu dwóch listbox1 (bez efektu). Próbowałem wybrać domyślny element w CTOverview.Listbox1 (bez efektu).
Na wszelki wypadek tutaj jest mój kod do otwierania / zamykania zestawu rekordów:
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
O ile wiem, muszę skupić uwagę na arkuszu CTOverview. Jeśli kliknę na inny arkusz, a następnie kliknę z powrotem na CTOverview, Listbox1 wydaje się działać. To jest problem, ponieważ CTOverview ma być moim arkuszem uruchamiania.
Masz jakiś pomysł, dlaczego tak się dzieje? Wyciągam włosy, próbując to rozgryźć. Wszelkie spostrzeżenia byłyby bardzo mile widziane.