检查OnAction是否为空

时间:2013-10-10 19:40:13

标签: vba excel-vba excel

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

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

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

Edit1:我使用下面的代码片段来浏览工作簿中的所有形状,并检查是否存在分配宏的形状。我使用包含ChartPicture的一些工作簿对其进行测试,似乎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

1 个答案:

答案 0 :(得分:0)

如果没有为自选图形指定宏,则以下内容将指示 True

Sub hgfd()
    Dim s As Shape, t As String
    Set s = ActiveSheet.Shapes(1)
    t = CStr(s.OnAction)
    MsgBox t = ""
End Sub