Excel 2013 VBA:在工作簿之间单击时设置活动工作簿

我有一个用户窗体的工作簿,其中包含一个用于填充工作表上的数据的列表框。

如果我打开了多个工作簿,并且从一个工作簿直接单击到另一个工作簿中的用户窗体上的列表框,则在Activeworkbook更改之前触发ListBox_Change事件以反映包含该用户窗体的工作簿。 所以当代码达到Set EqDataSht = ActiveWorkbook.Worksheets("Equipment-Data")我得到一个下标超出范围的错误,因为我来自的工作簿不包含一个名为“Equipment-Data”的工作表。

将ActiveWorkbook设置为用户表单的父级的最佳方法是什么? 我有过的想法是在workbook_open上设置一个公共variableswb = ActiveWorkbook ,或者只是捕获E​​rr.Number = 9,然后告诉用户在单击用户窗体之前单击表单。 我确定有一些简单的东西我完全可以忽略(VBA业余爱好者)。

思考?

而不是activeworkbook使用这个工作簿返回代码所在的工作簿。

为了使它活跃这个工作thisworkbook.activate激活应该工作