我有两个工作簿,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成为焦点的地方,但这没有发生。
任何帮助或解释为什么会发生这种情况,将不胜感激。