我有一个带有userform的工作簿,其中包含一个用于填充工作表上数据的列表框。
如果我打开了多个工作簿,并且从一个工作簿直接单击另一个工作簿中userform的列表框,则会在Activeworkbook更改之前触发ListBox_Change事件以反映包含userform的工作簿。因此,当代码到达Set EqDataSht = ActiveWorkbook.Worksheets("Equipment-Data")
时,我得到一个超出范围错误的下标,因为我来自的工作簿不包含名为“Equipment-Data”的工作表。
将ActiveWorkbook设置为userform的父级的最佳方法是什么?我曾经想过在workbook_open上设置一个公共变量wb = ActiveWorkbook
,或者只是捕获Err.Number = 9并告诉用户在点击用户窗体之前点击工作表。我确信有一些简单的东西我完全可以忽视(VBA业余爱好者)。
思想?
答案 0 :(得分:3)
而不是activeworkbook
使用thisworkbook
来返回代码所在的工作簿。
要激活thisworkbook.activate
,