我在工作簿中的特定工作表上执行了一些VBA操作,这些工作表可能会在以后复制,从而使最终用户可以一次打开多个副本(并用不同的数据填充表格)。
问题:
我是否需要明确引用ThisWorkbook.Sheets(strMySheetName)
以避免任何代码在工作簿 上但在工作簿的另一个副本中打开的同一代码(在同一位置打开)时间),还是Sheets
集合总是引用代码所在的工作簿 (即ThisWorkbook
)?
答案 0 :(得分:0)
简短的回答:不,您不需要。
宏的默认执行上下文是当前活动的工作簿。 因此,如果通过对工作簿工作表执行操作(计算,按钮之类的小部件,保存或加载事件)来启动宏,则没有任何风险。
如果宏是跨工作簿的,可以通过对另一工作簿的操作来触发,或者打算设置焦点,加载,修改其他工作簿,则必须指定ThisWorkbook.
正如您在问题注释中已经提到的那样,诸如Workbook("myworkbookname")
之类的替代方案在许多情况下更能消除歧义,但在更改文件名时会产生副作用。