Visio VBA 删除活动中的所有类似形状 sheet 不删除所有

Visio VBA Delete all Like shapes on active sheet not deleting all

我创建此函数是为了遍历当前 sheet 并删除所有以“Stn_”开头的形状。好像一次只能删除几个。我必须多次结束 运行 才能将它们全部删除。我不确定为什么它不能正常工作...

Private Sub btnReset_click()
'Reset Shapes needs work


For Each shp In ActivePage.Shapes
    Debug.Print shp.Name
    If shp.Name Like "Stn_*" Then
        ActiveWindow.Select shp, visSelect
        ActiveWindow.Selection.Delete
    End If
Next

结束子

任何人都可以对它为什么这样做有任何指示或解释吗?

非常感谢。

删除形状时需要倒数。例如,如果您删除形状 1,则形状 2 将成为新的形状 1,但循环计数器会绕过该形状移动到 2。所以你不能使用 For Each,你必须使用普通的旧 For 但按 -1 计数。