在Visio中更改形状颜色

需要帮助!

在宏,VBA,脚本等方面,我比较有知识,但是Visio编码对我来说是一个全新的怪物。

简而言之,我有一个仓库地图布局,带有简单的正方形形状标记产品位置,并且我想根据正方形的 Prop._VisDM_F2 数据元素对正方形进行颜色编码。到目前为止,我的代码似乎有效,但仅适用于正方形组中的第一个形状,但有时主形状由1个正方形,有时为6个以及介于两者之间的所有内容组成。

我了解到“形状()”中的#选择要更改的正方形,但我希望它们 ALL 进行更改。我尝试计算出每个主形状中有多少个单独的形状,以使用可变整数作为,但是它没有用。

当然,这么简单的任务实际上并不会那么复杂,所以我可能只是缺少了一些步骤。任何帮助将不胜感激!

'''

Dim selectObj As Visio.Shape

For Each selectObj In activeWindow.Selection
If selectObj.CellExistsU("Prop._VisDM_F2",Visio.VisExistsflags.visExistsAnywhere) Then
selectObj.Shapes(1).Cells("Fillforegnd").FormulaU = visWhite
End If
Next

End Sub

'''

RENXIAODUO87 回答:在Visio中更改形状颜色

形状可以具有子形状,这些子形状可以根据您的代码通过Shapes属性进行访问(请注意,大多数Visio集合基于1而不是0)。

您可以按索引或为每个子形状添加一个子形状集合。因此,鉴于您可能知道或可能不知道子形状的深度,可以通过它们进行递归操作,如下所示:

Sub ApplyFillToAll()

Dim shp As Visio.Shape

For Each shp In ActiveWindow.Selection
    If shp.CellExistsU("Prop._VisDM_F2",Visio.VisExistsFlags.visExistsAnywhere) Then
        SetFill shp,"RGB(255,0)"
    End If
Next

End Sub

Public Sub SetFill(ByRef shpIn As Visio.Shape,fillFormula As String)

Dim shp As Visio.Shape

For Each shp In shpIn.Shapes
    shp.Cells("FillForegnd").FormulaU = fillFormula
    SetFill shp,fillFormula
Next

End Sub

请注意,您要设置的公式是一个字符串,因此用双引号引起来,上面的代码将通过SetFill方法调用自身向下导航树的方式将所有子形状设置为红色。 / p>

我将添加一个链接到非常老的帖子,您可能也会发现它有用:

https://visualsignals.typepad.co.uk/vislog/2007/11/looping-through.html

本文链接:https://www.f2er.com/2696363.html

大家都在问