首页 > 解决方案 > 使用 VBA 获取导向的精确 x/y 位置,以便将形状与其精确对齐

问题描述

有没有办法获得精确的 - 包括小数位 - 使用 VBA 的指南的 x/y 位置?

通过 VBA 获取 PPT 中的指南位置时,结果并不像要求的那样精确。小数位被省略。这让我很困惑,因为变量类型是“单”,应该包含小数位。

首要目标是使用 VBA 将各种形状“捕捉”到指南。用例:用户选择一个或多个形状,并希望通过单击一个按钮将它们全部对齐到演示文稿中最左侧的指南。

到目前为止,我的代码运行良好,唯一的问题是形状没有与指南精确对齐。

Sub align_left()
    Dim shp As Shape
    Dim gd As Guide
    With ActiveWindow.Selection
        On Error Resume Next
        x_gd = ActiveWindow.Width

        MsgBox x_gd

        For Each gd In ActivePresentation.SlideMaster.Guides
            If gd.Orientation = ppVerticalGuide And gd.Position < x_gd Then
                x_gd = gd.Position
            End If
        Next

        MsgBox x_gd

        For Each shp In .ShapeRange
            shp.Left = x_gd
        Next

    End With
End Sub

预期:形状“捕捉”到参考线。实际:形状移动到靠近参考线的位置,但根据参考线位置,参考线和形状之间仍然存在间隙。

标签: vbapowerpoint

解决方案


我会说四舍五入到小数点后 4 位,因为尺寸设置为单个值

            shp.Left = Round(x_gd, 4)
            shp.Top = Round(y_gd, 4)

推荐阅读