2013-10-10 4 views
0

В этом 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 
+0

Я вижу ... Может быть, это связано с типом формы ... Одна форма, которая дает мне неправильный результат является 'Chart', вы хотите, чтобы проверить его на Твоя сторона? – SoftTimur

+0

Это работает, как и ожидалось, даже на диаграммах. '? Shp.OnAction =" "возвращает' True', если макрос не назначен, или 'False', если задан макрос. –

+0

Это поможет включить * точный * код, который вы сейчас используете в своем вопросе: это предпочтительнее просто ссылаться на другой вопрос. –

ответ

0

Если нет макроса не был назначен на автофигуры, то следующий будут указывают Правда:

Sub hgfd() 
    Dim s As Shape, t As String 
    Set s = ActiveSheet.Shapes(1) 
    t = CStr(s.OnAction) 
    MsgBox t = "" 
End Sub 
Смежные вопросы