我有一个宏,用于将形状放置在我的 excel 文件的打印区域内。简而言之,为此,我使用所选形状的宽度 ( Application.Selection
) 并将其从打印区域宽度中删除,然后将其除以所选形状的总数。
97% 的时间它都能正常工作。3% 的时间它不能正常工作是因为 excel 似乎没有得到正确的形状尺寸。宽度偏离了约 50%。
所以我想知道这是怎么发生的以及为什么会发生?这似乎是随机的,尽管当它发生时,只有当选择了多个形状时才会发生。如果我运行脚本时只选择有问题的形状,尺寸就没问题了。
其他人也遇到过这种情况吗?怎样解决?
- 这是 Excel 中形状的大小:
从这些维度和知道 excel vba 中的尺寸是点它们将转换为高度 ≈ 92.41 和宽度 ≈ 191.91。
- 当选择两个形状(存储在集合中)时,这是我从 vba 获取的大小collShp
:
- 当仅选择有问题的形状时:
+++编辑添加一些代码:+++ 这是代码中与形状混淆的部分。它看起来像是随机的,因为我刚刚打开了同一个文件,现在大小没问题了……形状是简单的屏幕截图,如“printscreened”,并直接粘贴到 excel 文件中。
Sub centerShapeCompressed()
If VarType(Application.Selection) <> 9 Then Exit Sub 'Type "9" is type "Object"
Dim shp As Object
Dim xlapp As Application
Set xlapp = Excel.Application
On Error Resume Next
Debug.Print Application.Selection.Count 'if "Selection" contains less than 2 -> throws an error
If Err.Number = 0 Then 'If Selection.Count > 1
On Error GoTo 0
Dim collShp As Collection
Set collShp = New Collection
For Each shp In Application.Selection
collShp.Add shp, shp.Name
Next shp
Else
Set shp = Application.Selection
End If
End Sub