簡體   English   中英

在 Visio 中更改形狀顏色

[英]Changing Shape Color in Visio

需要一些幫助!

我在宏、VBA、腳本等方面比較了解,但 Visio 編碼對我來說是一個全新的怪物。

簡而言之,我有一個倉庫地圖布局,帶有簡單的正方形形狀標記產品位置,我想根據它們的Prop._VisDM_F2數據元素對正方形進行顏色編碼。 到目前為止,我的代碼似乎有效,但僅適用於正方形組中的第一個形狀,但有時主形狀包含 1 個正方形,有時 6 個,以及介於兩者之間的所有形狀。

我了解到,在“形狀(#)”選擇#這方得到改變,但我想他們改變。 我試圖計算每個主形狀中有多少個單獨的形狀以使用可變整數作為# ,但它沒有用。

當然,這樣一個簡單的任務不可能真的這么復雜,所以我可能只是錯過了一步。 任何幫助將不勝感激!

'''

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

'''

形狀可以有子形狀,這些子形狀可以根據您的代碼通過 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,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 方法在樹中向下導航。

我將添加一個鏈接到一個非常舊的帖子,您可能也會發現它很有用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM