试图在VBA脚本中调整形状的大小,但无法精确调整大小



我发现在Excel中调整形状的大小令人难以置信地沮丧。出于某种原因,当我调整高度时,宽度会调整为某个随机数,反之亦然。我没有锁定纵横比,并且勾选了不要移动或调整单元格大小。形状是圆形,我正在尝试将它们格式化为具有相等的高度和宽度(12 x 12(

我认为这是由于格式化形状控件中的一些错误造成的,所以我写了一个非常简单的脚本来循环处理工作表中的所有形状并更正它们的属性,但同样的问题仍然存在。

Sub FixButFormat()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
sh.Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 12
Selection.ShapeRange.Width = 12
Selection.Placement = xlMove
Selection.ShapeRange.LockAspectRatio = msoTrue
Next sh
End Sub

请尝试下一个代码:

Sub FixButFormat()
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
With sh
.LockAspectRatio = msoFalse
.height = 12
.width = 12
.placement = xlMove
.LockAspectRatio = msoTrue
End With
Next sh
End Sub

但是,如果形状是圆形的,是否有可能不再是圆形?我的意思是在两个轴上都有相同的尺寸。否则,只修改一个维度就足够了,保持LockAspectRatio = msoTrue。。。

最新更新