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

时间:2017-04-19 20:17:45

标签: excel vba excel-vba

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

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

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

思想?

1 个答案:

答案 0 :(得分:3)

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

要激活thisworkbook.activate