0

我想计算图表中不同类型的形状,但我似乎无法完成。我想我必须为此编写一些代码。为此,我使用Visio 2007

我有一个流程图,其中大部分是我想按名称区分的过程形状。例如“A 型”、“B 型”。最后,我想要一份清单,告诉我我使用 A 型和 B 型的频率。手动计数容易出错。

我已经检查了报告/统计功能(我用的是德语,所以恐怕我不能告诉你确切的菜单名称),你可以在其中自己定义一个报告功能,尽管那个功能缺失满足我的需要。我设法为我的形状制作了一份报告,但前提是它们都被选中了。但是当用户必须手动选择它们时,他也可以从一开始就计算它们......而且您必须点击 4-5 次才能获得静态报告结果。

我发现的另一个几乎有用的功能是图层方法:为我要计数的类型创建一个图层,然后将形状分配给该图层。但是,再一次,这太容易出错了。如果用户错过了一个形状,计数将是错误的。

所以我想我需要用 VBA 编写一些代码。此外,我想在我的图表旁边有一个文本字段,其中始终显示所有类型的结果计数。因此,当您添加 A 型形状时,您会看到计数增加了 1。

有人可以帮我吗?

4

2 回答 2

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
于 2013-05-15T11:36:30.443 回答
1

使用 Data=reports=advanced 配置报告以计算具有您的自定义形状属性(例如“MIO”)&& 存在的对象。(或其他领域,有很多可供选择)。我将我想要计数的所有框都设置为具有属性“MIO”=TRUE,然后选择显示属性 Displayed Text。在小计对话框和下一个窗口中的选项中需要一些摆弄才能使计数看起来不错。不勾选 COUNT,并在选项对话框中启用“显示所有值”并勾选“从组中排除重复行”。

输出为 XML Excel Viso 对象。我知道对于 visio 对象,要更新报告,请右键单击它=运行报告。

高温高压

于 2013-07-04T11:48:54.100 回答