首页 > 解决方案 > VBA 运行时有时会出错,但有时在自动连接 visio 形状时不会出错

问题描述

我有一个相当大的程序,但它的作用是扫描数据表并使用该信息创建图表。一旦它放置了它返回的所有符号并将它们与我编写的这个函数连接起来,该函数通过放置一个连接器然后将其形状表的开始 x 和结束 x 部分更改为两个对象的连接点行来工作连接。宏将运行良好,毫无问题地进行一大堆连接,然后它会随机通过一个Run-time error '-2032465768 ...并说,“发生了异常”。我不明白的是,它将连接器正确放置在同一图表的相似部分上,当我查看两个对象的形状表时,它们的连接点已定义。此外,它在我运行它的其他时间偶尔发生,有时当我重新运行它时,它在之前遇到异常的部分工作正常。

这是错误消息:在此处输入图像描述

连接两个对象的函数是:

Sub ConnectShapes(Diagram As clsNewDiagram, Shape1 As Visio.Shape, Shape1ConnectionNum, Shape2 As Visio.Shape, Shape2ConnectionNum, Optional Color As Integer = LineColor.BLACK)
    Dim Connector As Visio.Shape
    Set Connector = Diagram.CurrentPage.Drop(Diagram.Document.Masters.ItemU("Dynamic connector"), 0#, 0#)
    Dim vsoCell1 As Visio.Cell
    Dim vsoCell2 As Visio.Cell
    Set vsoCell1 = Connector.CellsSRC(visSectionObject, visRowXForm1D, vis1DBeginX)
    Set vsoCell2 = Shape1.CellsSRC(visSectionConnectionPts, Shape1ConnectionNum, 0)
    vsoCell1.GlueTo vsoCell2
    Set vsoCell1 = Connector.CellsSRC(visSectionObject, visRowXForm1D, vis1DEndX)
    Set vsoCell2 = Shape2.CellsSRC(visSectionConnectionPts, Shape2ConnectionNum, 0)
    vsoCell1.GlueTo vsoCell2
    Connector.SendToBack
    
    'Connector.CellsSRC(visSectionObject, visRowShapeLayout, visSLOLineRouteExt).FormulaU = "2" ' For curved connector.
    'Connector.CellsSRC(visSectionObject, visRowShapeLayout, visSLOConFixedCode).FormulaU = "3"
    
    If Color = LineColor.FIBER Then
        Connector.CellsSRC(visSectionObject, visRowLine, visLineColor).FormulaU = "THEMEGUARD(RGB(255,0,255))"
    ElseIf Color = LineColor.DC Then
        Connector.CellsSRC(visSectionObject, visRowLine, visLineColor).FormulaU = "THEMEGUARD(RGB(255,102,0))"
    ElseIf Color = LineColor.RET Then
        Connector.CellsSRC(visSectionObject, visRowLine, visLineColor).FormulaU = "THEMEGUARD(RGB(0,202,0))"
    End If     
End Sub

当我按下调试它不喜欢这条线,但它适用于其他符号

这是它的输出图片,你可以看到它成功连接了其他符号,我 在此处输入图像描述 完全不知道为什么它突然出现这个错误,它不习惯。 在此处输入图像描述

标签: excelvbaexceptionvisio

解决方案


推荐阅读