为何Excel VBA旋转形状会改变尺寸,属性窗口旋转却不会?
Excel 2019中VBA旋转形状尺寸异常问题
在Excel 2019中,复制两个完全相同的形状,分别通过「形状格式」侧边栏设置旋转45度,以及使用VBA的Shape.Rotate方法旋转45度后,会发现VBA旋转的形状尺寸出现轻微变化。即使将两者都旋转回0度,尺寸差异依然存在。
重现步骤
- 将窗口缩放设置为96%
- 创建矩形并复制一份,可将副本置于原形状上方以便观察
- 右键点击第一个矩形,打开「形状格式」侧边栏,在第三栏输入45作为旋转值
- 使用VBA代码旋转另一个形状45度
- 两个形状尺寸出现差异,旋转回0度后差异仍存在
注:该问题在45度旋转时出现,也可能因环境不同而有所变化
解决方案
此问题由窗口缩放比例非100%导致,可在VBA旋转前添加以下代码解决:
If Not ActiveWindow.Zoom = 100 Then If MsgBox( _ "Zoom other than 100% sometime cause small inacuracies during rotation." & vbCrLf _ & vbCrLf _ & "Restaure zoom to 100% ?", vbYesNo) = vbYes Then ActiveWindow.Zoom = 100 'Set the zoom to 100% End If End If
若有无需强制缩放至100%的更佳方案,欢迎补充。
内容的提问来源于stack exchange,提问作者FMaz008
相关产品推荐
相关产品推荐

