我打开了工作簿,并通过“另存为”选项进行复制。当我打开保存的工作簿时,它会抛出错误
Excel选择工作表类的方法失败
并且代码为:
Sheets(sh_03).Select
如果我将Select
替换为Activate
,那么它可以正常工作,但我不知道为什么。 “变量宣言”中也宣布了sh_03
。对于我在Bex工具Addins of SAP中运行的大多数已保存的工作簿,都会出现此错误。
Pivot表刷新的其他相同问题,其中错误为
未设置对象变量或块变量
和代码为:
For Each wks In ActiveWorkbook.Worksheets
如果我将Active
替换为This
,那么它会再次起作用,但我不知道其影响。
如果有任何帮助我将非常感谢,请告诉我。
谢谢, 苛刻
答案 0 :(得分:0)
ActiveWorkbook
是当前处于活动状态的工作簿。它是相对的,应该不应该使用,因为你不能总是确定它将指向你想要的工作簿,除非你明确激活你想要编写代码的工作簿之前的一行或两行。鉴于此,切换到ThisWorkbook
,这是代码所在的工作簿,是一个更安全的赌注。你应该感到很自在地做出改变。
至于第一个错误,因为您的ActiveWorkbook
与ThisWorkbook
不同(因为第二个错误),那么我们知道我们想要的工作簿此刻不活跃。如果您尝试SELECT
工作簿中不在ActiveWorkbook
中的工作表,则可能会出现此错误。将该代码更改为.Activate
会更安全,因为.Activate
会自动将Activeworkbook
切换为ThisWorkbook
并将.Select
切换为工作表。
随意更换这两个解决方案,因为它们是当前代码的更好解决方案,因为(正如您所发现的)当前代码在某些情况下容易出错,例如ActiveWorkbook
不是{{ 1}}。