复制文件时重新分配宏到命令按钮

时间:2009-04-17 06:27:56

标签: excel-vba vba excel

我在XL中遇到有关在将源工作表复制到新工作簿中的目标工作表时重新定义单选按钮宏分配的问题。

当我单击目标工作表中的单选按钮时,它会尝试打开源工作簿RATHER以运行分配给该按钮的宏。

我已经检查过,目标工作簿确实具有与原始源工作簿相同的宏副本。但是,通过右键单击单选按钮上的/指定宏,我发现路径STILL指向源工作簿/工作表。

我从源代码工作表运行它时尝试了以下代码,但它不起作用。

代码:

wbkDESTINATION.Sheets("1-Start").Select
ActiveSheet.Shapes("Option Button 1").Select
Selection.OnAction = "Sheet1.WEEKLY"

我很感激您的建议,如何修改最后的Selection.OnAction代码,以便XL知道从目标工作表中选择它,而不是跳回到原始源工作簿。

由于

2 个答案:

答案 0 :(得分:0)

D'哦!刚刚意识到你正在使用Forms控件。您可以通过显式引用工作簿来确保调用所需的过程,如下所示:

wbkDESTINATION.Sheets("1-Start").Select
ActiveSheet.Shapes("Option Button 1").Select
Selection.OnAction = ThisWorkbook.name & "!Sheet1.WEEKLY"

我认为虽然控件出现在Shapes集合中,但它们实际上是OLE对象,在工作表代码模块中有自己的_click事件,并且不能通过onaction分配给它们的替代过程。尽管如此,对这一重要区别的帮助仍然是模糊不清的。

我在测试过程中证实了这一点;控件始终引用父工作表中的_click事件。你是如何复制工作表的?我尝试使用用户界面,并以编程方式从标准和工作表代码模块中获取,并且每次都得到相同的结果。

答案 1 :(得分:0)

这是相当新的,但我会将其发布给未来的求职者。

我遇到了这个问题,因为我遇到的问题完全相同。最后,我找到了以下解决方案,并提示如何从源工作表中删除连接(如果存在)。

https://www.thespreadsheetguru.com/blog/correcting-shape-assigned-macro-links-after-copying-worksheet-vba