与用户表单交互时,需要帮助使辅助工作簿保持打开状态

时间:2019-06-26 13:27:18

标签: excel vba

作为我正在制作的宏的一部分,我有打开辅助工作簿的代码(使用指向该工作簿的超链接,该超链接写在我的原始工作簿的单元格中)。然后,将打开一个用户窗体(一个列表框,其中填充了辅助工作簿中一行的值)。

问题是:
每次单击用户窗体(甚至只是移动它),原始工作簿都会显示在辅助工作簿的顶部,因此不再可见。出于宏的目的,我需要辅助工作簿和用户窗体始终保持可见,直到单击底部的按钮为止。

我尝试了.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

0 个答案:

没有答案