我对工作簿中的特定工作表执行一些VBA操作,这些操作可能会在稍后复制,从而使最终用户能够一次打开多个副本(并用不同的数据填充表)。
问题:
我是否需要显式地引用ThisWorkbook.Sheets(strMySheetName)
,以避免在同名工作表上操作任何代码,但在另一个工作簿副本中操作(同时打开),还是Sheets
集合总是引用代码所在的工作簿(即ThisWorkbook
)?
发布于 2018-07-04 05:52:09
简短的回答:不,你不需要。
宏执行的默认上下文,即当前活动的工作簿。因此,如果您的宏是通过Workbook工作表上的操作(计算、小部件(如按钮、保存或加载事件)启动的),则没有风险。
如果您的宏是跨工作簿,可以通过对另一个工作簿的操作触发,或者打算设置焦点、加载、修改其他工作簿,则必须指定ThisWorkbook.
。
正如您的问题的注释中已经提到的,在许多情况下,像Workbook("myworkbookname")
这样的替代方法更适合消除歧义,但如果您更改文件名,则会产生副作用。
https://stackoverflow.com/questions/51174374
复制