不幸的是,我的原理图最初的顺序非常混乱,如您在左侧所见。
字母顺序只按水平排列,不按垂直排列。
我试图与代码作斗争,但它更像是交换一些“分支”。
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(925), visSelect
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1143), visSelect
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(814), visSelect
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1141), visSelect
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1142), visSelect
Application.ActiveWindow.Selection.Move 0.224972, 2.302099
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1144), visSelect
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1017), visSelect
ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(1072), visSelect
Application.ActiveWindow.Selection.Move 0.151857, 2.238548
另一种方法是:
If Vshp.Name Like "*UG*" Then
If Vshp.CellsSRC(visSectionCharacter, 0, visCharacterSize).FormulaU Like """"*NRTH-X*"""" Then
Sort Key1:=Range("SLD"), Order1:=xlAscending 万一 结束如果
我有错误,即:对象不支持此属性或方法。
是否有机会按升序(字母顺序)方式按形状对形状进行排序,类似于此线程: VBA visio - 无法更改元素中的字体大小
如果你想以编程方式获取形状的文本,你必须使用 Text 属性 使用像
这样的语法If Vshp.Text Like """"*NRTH-X*"""" Then
另一种使用INSTR函数的方法
If instr(Vshp.Text,"NRTH-X")>0 Then
这个解决方案展示了如何处理文本,而不是关于自动排序!
对不起,我忘了像“NRTH-X”这样的文字有子形状.
同样在你的情况下,这个子形状没有文本,使用了字段。
尝试使用语法
If Vshp.Shapes(4).Characters.Text Like "**NRTH-X**" Then
请看我这边的测试
在其他线程中,我已经多次写信给您,您使用一种复杂的方式在页面上尝试数字。
恕我直言,使用 CreateSelection 方法的最佳方式