В этом link я использую SHP.OnAction
(где Dim SHP As Shape
), чтобы напечатать имя макроса, которому присвоена фигура.Проверьте, нет ли OnAction
Теперь я хотел бы проверить, нет ли SHP.OnAction
, что означает, что макроса не назначено этому объекту. SHP.OnAction = ""
не работает, он всегда возвращает false
. Я также попробовал «SHP.OnAction = Empty ,
SHP.OnAction = Null , they always return
false` слишком ...
Может ли кто-нибудь сказать мне, как проверить, не пуст?
Редактировать 1: Я использую следующий фрагмент кода, чтобы просмотреть все фигуры в книге и проверить, есть ли форма для макроса. Я проверить его с некоторыми учебными пособиями, содержащими 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
Я вижу ... Может быть, это связано с типом формы ... Одна форма, которая дает мне неправильный результат является 'Chart', вы хотите, чтобы проверить его на Твоя сторона? – SoftTimur
Это работает, как и ожидалось, даже на диаграммах. '? Shp.OnAction =" "возвращает' True', если макрос не назначен, или 'False', если задан макрос. –
Это поможет включить * точный * код, который вы сейчас используете в своем вопросе: это предпочтительнее просто ссылаться на другой вопрос. –