2013-05-15 93 views
0

我想計數不同類型的在我的圖形狀,我似乎無法弄完。我想我必須爲此編寫代碼。 爲此,我使用Visio 2007計數形狀的名字在Visio

我有一個大多數流程形狀的流程圖,我想區分名稱。例如「A型」,「B型」。最後,我想要一個列表,告訴我我多久使用Type A和Type B.手工計算將會出錯。

我已經檢出了報告/統計功能(我在德語中使用它,所以我恐怕不能告訴你確切的菜單名稱),在那裏你可以自己定義報告功能,雖然那個人爲我的需要錯過了功能。我設法爲我的形狀做出報告,但只有當他們全部被選中時。但是當用戶必須手動選擇它們時,他可以從一開始就對它們進行計數......並且必須進行4-5次點擊才能獲得靜態報告結果。

我發現另一個幾乎有用的功能是層的方法:創建我要算一個類型層,然後分配形狀到該層。但是,再一次,這太容易出錯了。如果用戶錯過一個形狀,計數將是錯誤的。

所以我想我會需要編寫與VBA的東西。 此外,我想未來有一個文本字段我圖其中得到計數爲各類總是顯示。所以你看到當你添加一個A型的形狀時,計數增加1。

任何人都可以幫助我嗎?

回答

1

嘗試:

Option Explicit 

Dim myShape As Shape 

Sub ShapesDetails() 

    Call DeleteShapes(True) 

    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 139.5, 81.75, 72, 72).Select 
    Selection.Name = "Rectangle" 
    ActiveSheet.Shapes.AddShape(msoShapeSmileyFace, 252.75, 71.25, 72, 72).Select 
    Selection.Name = "Smiley Face" 
    Application.CutCopyMode = False 

    Call ShapeDetails(True) 

End Sub 

Sub ShapeDetails(x As Boolean) 
    For Each myShape In ActiveSheet.Shapes 
     MsgBox "Shape name: " & myShape.Name & vbTab & " Shape type: " & myShape.Type 
    Next 
End Sub 

Sub DeleteShapes(x As Boolean) 
    For Each myShape In ActiveSheet.Shapes 
     myShape.Delete 
    Next 
End Sub 
1

使用數據=報告=高級配置報告數與您的自定義形狀屬性(例如 'MIO')& &存在的對象。 (或另一個領域,很多可供選擇)。我將所有想要計數的框設置爲屬性「MIO」= TRUE,然後選擇顯示屬性「顯示文本」。在「小計」對話框和下一個窗口中的選項中需要一些擺弄,才能使計數看起來不錯。不選中COUNT,然後在選項對話框中啓用「顯示所有值」並勾選「從組中排除重複的行」。

輸出作爲XML的Excel維索對象。我知道的Visio對象,更新報告,右鍵單擊它=運行報告。

HTH