Excel ActiveX Listbox beim Öffnen der Datei nicht aktiviert
Ich versuche, eine bizarre Situation herauszufinden.
Ich habe ein Arbeitsbuch mit vielen Blättern. Auf einem Blatt habe ich eine ActiveX-Listbox (CTOverview.Listbox1). Auf einem zweiten Blatt habe ich insgesamt drei Listboxen (CTSelected.Listbox1 bis Listbox3). Ich benutze eine Abfrage, um Listbox1 auf beiden Blättern mit denselben Daten zu füllen. Der Code dafür ist unten:
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
Dieser Code funktioniert wunderbar (nicht mein Code - ich habe ihn von den Zwischenrohren erhalten). Beide LIstbox1 auf beiden Blättern werden mit der Liste der unterschiedlichen Regionen geladen. Ich kann CTOverview.Listbox1 jedoch nicht auf Eingaben reagieren lassen, bis ich etwas aus CTSelected.Listbox1 ausgewählt habe. Sobald ich das mache, funktionieren beide Listbox1s normal und sind nicht anderweitig verbunden, zumindest soweit ich das beurteilen kann.
Ich habe versucht, das Recordset zu schließen, nachdem ich die beiden Listbox1s ausgefüllt habe (keine Auswirkung). Ich habe versucht, ein Standardelement in CTOverview.Listbox1 auszuwählen (keine Auswirkung).
Für den Fall, dass es wichtig ist, hier ist mein Code zum Öffnen / Schließen des Recordset:
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
Soweit ich das beurteilen kann, muss ich mich vom CTOverview-Blatt lösen. Wenn ich auf ein anderes Blatt klicke und dann zurück zu CTOverview klicke, scheint Listbox1 zu funktionieren. Dies ist ein Problem, da CTOverview mein Startblatt sein soll.
Irgendeine Idee, warum das passieren könnte? Ich ziehe mir die Haare aus und versuche das herauszufinden. Alle Einsichten wäre sehr dankbar.