首页 > 解决方案 > Set Shape .OnAction 导致 1004 错误:应用程序定义或对象定义错误

问题描述

我整个早上都在尝试解决这个错误,但无法处理它。看起来 Excel 真的只是不希望我设置这个形状的 OnAction 属性。

该形状是一组其他矩形/文本框的一部分。

该代码适用于非分组形状。

    Function Macro1()

    MsgBox (ActiveSheet.Shapes("box").OnAction)  'Returns the current OnAction string, as expected.

    ActiveSheet.Shapes("box").OnAction = "'WorksheetName'!Macro2"  '1004 error occurs here

    End Function

我尝试将其设置为“Macro2”、Macro2,将其保存为 OnAction 行之前的字符串,甚至只是尝试将其设置为空字符串“”。没有骰子。

标签: excelvba

解决方案


解决了。组形状会干扰单个形状属性。以下工作可打破组,编辑形状,然后重新组合:

Function Macro1()
    With ActiveSheet
        .Shapes("Home").Ungroup
        .Shapes("box").OnAction = "Macro2"
        With .Shapes.Range("box").Regroup
            .Name = "Home"
        End With
    End With
End Function

推荐阅读