У меня есть довольно простой кусок кода на листе ThisWorkbook в VBA. Как вы можете видеть, этот код заполняет комбинированный список именем сервера. Идея состоит в том, что пользователь выберет этот сервер после открытия рабочей книги, а затем активирует макрос на основе серверной переменной, чтобы заполнить второй комбинированный список списком баз данных.
Чтобы заполнить этот комбинированный список, макрос CB_Server_Change использует соединение ADODB для обращения к серверу и извлечения имен базы данных для выбора пользователем.
Однако при открытии этой книги она зависает и в конечном итоге отлаживается с невозможностью установить соединение с сервером. Что неудивительно, потому что при открытии книги у пользователя не было возможности выбрать какие-либо переменные.
При попытке отладки я обнаружил, что при переходе через .AddItem "M01-SQL-P09-DB2" для перехода к строке .ListIndex = 0 он просто переходит к макросу на рабочем листе (меню управления), где комбинированный список находится и пытается запустить макрос CB_Server_Change?
Я не могу понять, почему он не просто заполняет поле со списком, как запрошено, я вообще не ссылаюсь на лист меню управления или макрос CB_Server_Change в макросе ThisWorkbook Workbook_Open ().
Private Sub Workbook_Open()
With Application
.Calculation = xlManual
.EnableEvents = False
.ScreenUpdating = False
End With
With Worksheets("Control Menu").CB_Server
.Clear
.AddItem "Select Server"
.AddItem "M01-SQL-P09-DB2"
.ListIndex = 0
End With
'Restore the settings.
With Application
.Calculation = xlAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
кто-нибудь сталкивался с этим раньше? Любая помощь будет высоко ценится.
Заранее спасибо