夜的影子 发表于 2025-5-9 11:55:13

写个VBA函数,颠倒左右、上下位置顺序。

---->

注意要选中以后,才能颠倒位置,以左边距为准,不是中心点。
--------------------------------------------
Sub 颠倒左右顺序()
    VGCore.ActiveDocument.BeginCommandGroup "颠倒左右顺序"
    Dim userSelect As VGCore.ShapeRange
    Set userSelect = VGCore.ActiveSelectionRange
    Dim dLeft() As Double
    ReDim dLeft(userSelect.Count)
    Dim J As Long
    For I = 1 To userSelect.Count
      dLeft(I) = userSelect.Shapes(I).LeftX
    Next

    J = 1
    For I = userSelect.Count To 1 Step -1
      userSelect.Shapes(I).LeftX = dLeft(J)
      J = J + 1
    Next

    VGCore.ActiveDocument.EndCommandGroup
End Sub
-----------------------------------------------
**** 本内容需购买 ****

xiyanghxc 发表于 2025-5-9 12:31:46

本帖最后由 xiyanghxc 于 2025-5-9 12:38 编辑

有空再出一个:按选中对象顺序(从左到右、从上到下)对应图层顺序的脚本,最终是图层里从上到下的顺序对应画板里对象的顺序

夜的影子 发表于 2025-5-9 13:54:01

xiyanghxc 发表于 2025-5-9 12:31
有空再出一个:按选中对象顺序(从左到右、从上到下)对应图层顺序的脚本,最终是图层里从上到下的顺序对应 ...

先选中的排下面?

夜的影子 发表于 2025-5-9 14:18:42

Sub 颠倒选择顺序()
    VGCore.ActiveDocument.BeginCommandGroup "颠倒选择顺序"
    Dim userSelect As VGCore.ShapeRange
    Set userSelect = VGCore.ActiveSelectionRange
   
    For I = 1 To userSelect.Count - 1
      userSelect.Shapes(I).OrderBackOf userSelect.Shapes(userSelect.Count)
    Next
    VGCore.ActiveDocument.EndCommandGroup
End Sub

这个不知道是不是你要的效果,按选择顺序调整层次。

xiyanghxc 发表于 2025-5-9 15:01:16

夜的影子 发表于 2025-5-9 14:18
Sub 颠倒选择顺序()
    VGCore.ActiveDocument.BeginCommandGroup "颠倒选择顺序"
    Dim userSelect As...

在2024版本里运行没反应

夜的影子 发表于 2025-5-9 17:00:56

xiyanghxc 发表于 2025-5-9 15:01
在2024版本里运行没反应

我的是2021, 需要选中形状以后再运行,这个是针对选中的形状的。

petergh 发表于 2025-5-9 21:48:37

夜的影子 发表于 2025-5-9 14:18
Sub 颠倒选择顺序()
    VGCore.ActiveDocument.BeginCommandGroup "颠倒选择顺序"
    Dim userSelect As...

选中对象运行,没有任何反应的?

petergh 发表于 2025-5-9 21:53:20

xiyanghxc 发表于 2025-5-9 12:31
有空再出一个:按选中对象顺序(从左到右、从上到下)对应图层顺序的脚本,最终是图层里从上到下的顺序对应 ...

很期待这个在图层中重排位置的功能。

alexcc 发表于 2025-5-10 09:53:55

有啥用处呢?设计有用?

baruny 发表于 2025-5-10 10:39:41

文字逆序,直接Ctrl+L就可以
页: [1] 2
查看完整版本: 写个VBA函数,颠倒左右、上下位置顺序。