从一个工作簿中选择用户窗体上的组合框会导致工作表激活的问题

时间:2019-03-19 16:03:12

标签: excel vba

我有两个工作簿,MacroBook.xlsm中包含代码和用户窗体。 OtherBook.xlsx没有VBA代码,只能由该代码执行。

我有一个包含ComboBox和2个按钮的用户窗体。按钮1启动一个函数,该函数将OtherBook中的数据复制到MacroBook中的临时表中,从该范围中获取所有唯一项,然后删除临时表。

Function GetListOfEditors(ws As Worksheet) As Variant

    Dim i As Integer
    i = ufAddToDraftWorking.iEdDestRow

    Dim rng As Range, rng2 As Range
    Dim data As Variant
    Dim lRow As Integer

    'Create a temp sheet to store data
    Call CreateSheet("TempSheet")

    'Copy complete list of editors to temp sheet
    ws.Range(Cells(2, 4), Cells(i - 1, 5)).Copy ThisWorkbook.Worksheets("TempSheet").Range("A1")

    'Use worksheet function to remove duplicates from both columns
    Set rng = ThisWorkbook.Worksheets("TempSheet").UsedRange
    rng.RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo

    ThisWorkbook.Worksheets("TempSheet").Activate

    'Store updated data
    lRow = ThisWorkbook.Worksheets("TempSheet").UsedRange.Rows.Count

    Set rng2 = ThisWorkbook.Worksheets("TempSheet").Range(Cells(1, 1), Cells(lRow, 2))
    data = rng2

    'Delete Temp Sheet
    ThisWorkbook.Worksheets("TempSheet").Delete

    'Return List of Unique Editors
    GetListOfEditors = data

End Function

然后将该范围存储到用户窗体的ComboBox中。此时,OtherBook将集中在屏幕上。一旦我选择了用户窗体,例如单击组合框,MacroBook就成为焦点。

单击用户窗体上的下一个按钮,可以对“其他书”中的工作表进行一些更改。在此期间,MacroBook仍然是重点。

Sub AddApprover(ApproverName As String)

    Dim wbDraftPricing As Workbook
    Dim wsEditorSheet As Worksheet

    Dim i As Integer

    i = ufAddToDraftWorking.iEdDestRow

    Debug.Print Application.ScreenUpdating
    If FileHandler.IsWorkBookOpen(Globals.DraftWorkingFormulasPath) = True Then
        Set wbDraftPricing = Workbooks(FileHandler.FileNameFromPath(Globals.DraftWorkingFormulasPath))
    Else
        Set wbDraftPricing = OpenDraftWorkingFile()
    End If

   'OtherBook is still not put into focus here 
    Set wsEditorSheet = wbDraftPricing.Worksheets("Editor List")
    wbDraftPricing.Activate
    wsEditorSheet.Activate

    With wsEditorSheet

        'Add Approver from dropdown list on userform
        .Cells(i, 5) = ApproverName
        .Cells(i, 12) = .Cells(i, 4)
        'Add Vlookups to get correct naming from sharepoint
        .Cells(i, 16).Formula = "=VLOOKUP(D" & i & ",V:W,2,FALSE)"
        .Cells(i, 17).Formula = "=VLOOKUP(E" & i & ",V:W,2,FALSE)"

    End With

    wbDraftPricing.Activate
    wsEditorSheet.Select

End Sub

如果我随后从任务栏中选择“ OtherBook”,这显然很重要。但是,单击此表是问题所在。如果我尝试在OtherBook中选择一个单元格,则实际选择的是MacroBook中的单元格。该效果会持续到单击OtherBook上的关闭按钮实际上关闭MacroBook。

要解决此问题,我必须单击“用户窗体”,然后单击“ MacroBook”,然后我可以打开“ OtherBook”并按常规选择单元格。

在函数AddApprover中,我已用注释标记了原本希望OtherBook成为焦点的地方,但这没有发生。

任何帮助或解释为什么会发生这种情况,将不胜感激。

0 个答案:

没有答案
相关问题