0

在此链接中,我使用SHP.OnAction(where Dim SHP As Shape) 打印分配给形状的宏的名称。

现在我想检查是否SHP.OnAction为空,这意味着没有分配给该对象的宏。SHP.OnAction = ""不起作用,它总是返回false。我也试过``SHP.OnAction = Empty ,SHP.OnAction = Null , they always returnfalse`...

谁能告诉我如何验证它是否为空?

Edit1:我使用以下代码来遍历工作簿中的所有形状,并检查是否有一个形状分配给了宏。我用一些包含Chartor的工作簿对其进行测试Picture,似乎sShpaes.OnAction <> ""总是返回true,即使形状没有宏......

On Error Resume Next
Dim sShapes As Shape
existsAssignedShape = False

For Each ws In Worksheets
    For Each sShapes In ws.Shapes
        st = ws.Name & "     " & sShapes.Name & "     " & sShapes.OnAction
        Print #1, st
        Print #1, ""
        If (Not existsAssignedShape) And (sShpaes.OnAction <> "") Then
            existsAssignedShape = True
        End If
    Next sShapes
Next ws
4

1 回答 1

0

如果没有将宏分配给自选图形,则以下内容将指示True

Sub hgfd()
    Dim s As Shape, t As String
    Set s = ActiveSheet.Shapes(1)
    t = CStr(s.OnAction)
    MsgBox t = ""
End Sub
于 2013-10-10T21:22:14.757 回答