我正在编写一系列宏,以便在分发每周版本的文件之前清理工作表。
任务之一是移除宏的所有控件对象。
我已经列出了具体的对象,以消除每个表,所以有一个像下面的少数行。
Sheets("Open SO").Shapes.Range(Array("Button 6", "Button 7", "Button 11", "Button 12")).Delete
但是它给了我一个错误,我不知道为什么。运行时错误是1004,消息(粗略翻译)“指定的对象找不到”。
工作表存在(我尝试了“Sheets”和“Worksheets”,但是因为我命名了工作表,所以应该没有区别)。按钮名称确实存在。
我从“开发人员”菜单手动运行宏,它位于同一工作簿的模块中。
语法错误吗?
编辑
看起来对象名称发生了变化,但变化是在语言上。
在第一张工作表中,我录制了一个宏,以获取表单中的按钮名称,使它们易于复制和粘贴。第一次录制宏时,它给了我以下代码:
ActiveSheet.Shapes.Range(Array("Button 12", "Button 11", "Button 6", "Button 7")). _
Select
Selection.Delete
当我今天通过记录宏再次检查时,代码是:
ActiveSheet.Shapes.Range(Array("ボタン 12", "ボタン 11", "ボタン 6", "ボタン 7")). _
Select
Selection.Delete
编辑文件的电脑有日文版Windows和日文版Office,但由于通常都是英语,所以我没有考虑最初的标签是英文。最初代码确实工作,但在整理到一行后就停止工作了。
如果我更改原始代码行以包含日语标签,它确实可以工作。
我现在有一个相关但不同的问题(也许我应该开始一个新的线程)。两个人需要使用这些宏。我们中的一个使用日语,另一个使用英语。日语宏在我的机器上工作。日语宏和英语宏在另一个运行英语Windows和Office的机器上都不工作(第二个机器上的按钮名称仍为日语)。
我在另一台计算机上遇到了同样的问题。
2条答案
按热度按时间tp5buhyn1#
按钮之谜
Button 1
、Button 2
...等。Button 6
奇迹般地变成了Button 13
,而其文本仍然是Button 6
..."。elcex8rz2#
命令的语法正确。该错误表示(至少)其中一个形状不存在。可能是名称中有打字错误,或者该形状已被删除。
例如,尝试下面的例程,它将删除您指定的所有形状,但如果一个形状不存在(或由于其他原因无法删除),它将只把形状名称写入即时窗口并继续工作。
例如,您可以使用