vba - 使用 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
预期:形状“捕捉”到参考线。实际:形状移动到靠近参考线的位置,但根据参考线位置,参考线和形状之间仍然存在间隙。
解决方案
我会说四舍五入到小数点后 4 位,因为尺寸设置为单个值
shp.Left = Round(x_gd, 4)
shp.Top = Round(y_gd, 4)
推荐阅读
- python - 如何在 pyspark 上创建分层拆分训练、验证和测试集?
- ruby-on-rails - 为什么 Geocoder.search("Sam Francisco") 返回“大马士革,叙利亚”?
- excel - 在 Excel 中,我如何找到命名范围中最小值的单元格引用
- mysql - 如何创建一个由两个外键组成的复合键引用其他表的表?
- svelte - 来自 Javascript 的 Svelte 挂载 DOM 元素
- sql - 计算运行总计 - TSQL?
- c# - 在 OData 中包含额外的属性,而不更改有效负载 (uri)
- python - 图中遗漏了 Seaborn 值
- c++ - 为什么 SPOJ 下一个回文问题不接受此代码?
- c# - 从 Delphi Prism 移植到 C# 后,在结构上找不到 Class..ctor()