Как часть макроса, который я делаю, у меня есть код, который открывает вторичную книгу (используя гиперссылку на ту книгу, которая написана в ячейке в моей оригинальной книге).Затем открывается форма пользователя (список, заполненный значениями из строки во вторичной книге) вместе со вторичной книгой.
Проблема в том, что:
каждый раз, когда вы нажимаете на пользовательскую форму (даже просто для ее перемещения), оригинальная рабочая книга отображается поверх верхней рабочей книги, так что она больше не отображается.Для макроса мне нужно, чтобы вторичная рабочая книга и пользовательская форма оставались видимыми все время, пока не нажата кнопка внизу.
Я пробовал МНОГИЕ комбинации .Activate, .Show,.xlMinimize, .xlMaximize, .Visible, отключить обновление экрана и т. д., и ничто не приблизилось к работе.Я думаю, что проблема в том, что пользовательская форма является объектом оригинальной рабочей книги, поэтому при щелчке по ней всегда выводится оригинальная рабочая книга, но я не знаю, как это исправить.
Мой код довольно запутанно я сделаю все возможное, чтобы показать, что полезно.
Из одного модуля:
Private Sub findColumns_button_Click() 'finds selected shelf options, starts building table in data sheet
uf_TestSelector.Hide
Dim i As Integer, j As Integer
Set selected_index = New Collection
Set hyperlinks = New Collection
For i = 0 To descriptions.count - 1
If ts_listBox.Selected(i) = True Then
selected_index.Add i
Dim hyplnk As Variant
hyplnk = ThisWorkbook.Worksheets("Test Results").Cells(i + 3, 7).Value
hyperlinks.Add hyplnk
End If
Next i
...
Dim k As Integer
For k = 1 To selected_index.count 'cycles through selected options, sets 'hyperlink to be opened, shows next userform
...
hyperlink_A = hyperlinks(k)
uf_ColSelectA.Show vbModeless 'shows the userform that needs to be 'interacted with
Next k
...
End Sub
От uf_ColSelectA:
Private Sub UserForm_Activate()
Dim copyBook As Workbook
Set copyBook = Workbooks.Open(Filename:=hyperlink_A) 'copyBook = secondary workbook
Call findListBoxValues(shelves, copyBook)
linkA_Lbox.MultiSelect = 1
linkA_Lbox.List = shelves()
copyBook.Activate
End Sub