Excel VBA:通过代码lockingbutton的纵横比

我有以下代码将button放在特定单元格的工作表上。

Sub insertRowButtons() Dim btn As Button Application.ScreenUpdating = False ActiveSheet.Buttons.Delete Dim t As Range 'to show details for all groups ActiveSheet.Outline.ShowLevels rowlevels:=5 'use this lines for rows Dim arr As Variant arr = Array(20, 32, 44, 56) For i = 0 To UBound(arr) Set t = ActiveSheet.Range(Cells(arr(i), 4), Cells(arr(i), 4)) Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height) With btn .OnAction = "insertItemRows" .Caption = "Btn " & i .Name = "Btn" & i End With Next i 'set group detail back to standard view ActiveSheet.Outline.ShowLevels rowlevels:=4 Application.ScreenUpdating = True End Sub 

当我运行代码时,一切正常,除了所放置的button没有将“locking宽高比”选项设置为true。 正如你所看到的,在下面的图片中,locking长宽比是非常必要的。 当我插入button时,隐藏下面的一些行。

当行被隐藏,我放置button,然后取消隐藏行,然后button调整自己。

(红十字button手动locking长宽比,蓝十字无锁)

在这里输入图像说明

请告诉我如何在代码中将“locking长宽比”设置为true,而无需通过“格式控制”button进行手动设置。

一如既往,在此先感谢。

它看起来像一个形状对象只能LockAspectRatio,所以在你的循环中试试这个:

  With btn .OnAction = "insertItemRows" .Caption = "Btn " & i .Name = "Btn" & i ActiveSheet.Shapes(.Name).LockAspectRatio = msoTrue End With