Запустить частную подписку в Visio

Я написал два макроса в MS Visio. Первый макрос скрывает все слои, второй макрос выбирает определенный слой для отображения. Оба макроса работают нормально сами по себе, но когда я пытаюсь запустить первый макрос во втором макросе, я получил ошибку компиляции, что подпрограмма не может быть найдена. Есть идеи, как правильно вызвать частный саб?

Первая подпрограмма, скрывающая все слои: Private Sub Deselect_layers ()

Dim vsoPage As Visio.Page
Dim vsoShape As Visio.Shape
Dim vsoLayers As Visio.Layers
Dim vsoLayer As Visio.Layer
Set vsoPage = ActivePage
Set vsoLayers = vsoPage.Layers

For Each vsoLayer In vsoLayers
    If vsoLayer.CellsC(visLayerVisible).FormulaU = "1" Then
        vsoLayer.CellsC(visLayerVisible).FormulaU = "0"
    End If
Next
End Sub

Второй подпункт, который показывает один конкретный слой:

Sub Select18()

Dim vsoPage As Visio.Page
Dim vsoShape As Visio.Shape
Dim vsoLayers As Visio.Layers
Set vsoPage = ActivePage
Set vsoLayers = vsoPage.Layers

RUNMACRO ("SelectLayers.Deselect_layers")  <-- Error occurs here

vsoLayers.Item("18").CellsC(visLayerVisible).FormulaU = "1"

End Sub

Что я пробовал до сих пор:

RUNADDON ("ThisDocument.Deselect_layers")
RUNMACRO ("ThisDocument.Deselect_layers")
Callthis ("ThisDocument.Deselect_layers")
RUNADDON ("ThisDocument.SelectLayers.Deselect_layers")
RUNMACRO ("ThisDocument.SelectLayers.Deselect_layers")
Callthis ("ThisDocument.SelectLayers.Deselect_layers")

Ни одна из этих команд не сработала. Любая помощь будет очень приветствоваться!


person VBA Pete    schedule 14.04.2021    source источник


Ответы (1)


Попробуй это:

Private Sub Deselect_layers()
    Debug.Print "In Deselect_layers()"
End Sub

Sub Select18()
    Call Deselect_layers
End Sub
person StureS    schedule 14.04.2021