在此link中,我使用SHP.OnAction
(其中Dim SHP As Shape
)来打印分配给形状的宏的名称。
现在我想检查SHP.OnAction
是否为空,这意味着没有为此对象分配宏。SHP.OnAction = ""
不起作用,它始终返回false
。我也试过``SHP.OnAction = Empty ,
SHP.OnAction = Null , they always return
false`呢......
有人能告诉我如何验证它是否为空?
Edit1:我使用下面的代码片段来浏览工作簿中的所有形状,并检查是否存在分配宏的形状。我使用包含Chart
或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
答案 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