选择工作表时出现 Excel 应用程序定义的错误

问题描述 投票:0回答:2

几个月前,我用VBA在Excel中编写了一个程序,运行得很好。今天,我重新打开程序,代码出错了,给我一个“应用程序定义或对象定义的错误”。该工作簿存储在我有读/写权限的网络驱动器上。我还尝试使用保存在驱动器其他位置的工作簿的新副本以及保存在桌面上的副本,每个副本都会导致相同的错误。这是代码停止的地方

ThisWorkbook.Sheets("UI").Activate
ThisWorkbook.Sheets("UI").ChartObjects("MainChart").Chart.ProtectData = True
ThisWorkbook.Sheets("UI").ChartObjects("MainChart").Chart.ProtectFormatting = True
ThisWorkbook.Sheets("UI").ChartObjects("VPricePerChart").Chart.ProtectData = True
ThisWorkbook.Sheets("UI").ChartObjects("VPricePerChart").Chart.ProtectFormatting = True
ThisWorkbook.Sheets("UI").ChartObjects("NewChart").Chart.ProtectData = True
ThisWorkbook.Sheets("UI").ChartObjects("NewChart").Chart.ProtectFormatting = True

我知道我不需要激活工作表来更改特定命名对象的属性,但我今天在它停止工作后将该行放入以查看错误发生的位置。当我使用

Sheets("UI").Activate
时,错误发生在第一行。我尝试运行包含
Sheets("UI")
的其他程序,它们都返回相同的错误。我检查了一下,确保工作表的名称没有改变,它仍然是
UI
。工作表和工作簿均不受保护,且工作表未隐藏。我可以很好地运行
ThisWorkbook.Sheets("Data").Activate
,其中
Data
是另一张纸。我也尝试过使用
ThisWorkbook.Sheets(1).Activate
,因为
UI
是我工作簿中的第一张纸,但不起作用。

整个事情中最奇怪的部分是,完全相同的文件打开得非常好,运行所有编写的代码,而不会在我同事的机器上造成任何错误。

对于为什么我不能做任何涉及该表的事情有什么想法吗?

excel vba
2个回答
0
投票

您的“UI”工作表名称是否有可能包含前导或尾随空格?


0
投票

我也遇到过同样的问题。 在我的例子中,原因是工作表中的代码(不在模块中!)不再可执行(我删除了模块中的一个过程以及工作表中调用它的按钮。但是存在不可执行的代码,例如

sub CommandButton1_Click
调用已删除的过程) 因此,工作表就像处于“错误状态”,任何对
worksheets(...).Activate
的调用都会导致错误 1004

© www.soinside.com 2019 - 2024. All rights reserved.