首页 > 解决方案 > 在 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")

这些命令都不起作用。任何帮助将不胜感激!

标签: vbavisio

解决方案


试试这个:

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

Sub Select18()
    Call Deselect_layers
End Sub

推荐阅读