对于我的工作,我有时想自动创建位于特定位置的按钮,具有给定的宽度和高度。
我的代码是
Sub Add_Button(my_top, my_left, my_Width, my_Height)
Dim myBtn As Object, i As Integer
Set myBtn = ActiveSheet.Buttons.Add(1, 1, 1, 1)
With myBtn
.Top = Cells(my_top, my_left).Top
.Left = Cells(my_top, my_left).Left
.Height = Cells(my_top, my_left).Height * my_Height
.Width = Cells(my_top, my_left).Width * my_Width
.Caption = text
End With
End Sub
Run Code Online (Sandbox Code Playgroud)
所以我会说代码非常简单。我用以下行调用此 Sub
Sub Test_Add_Button()
my_top = 2
my_left = 60
my_Width = 2
my_Height = 3
Add_Button my_top, my_left, my_Width, my_Height
End Sub
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,当电子表格在我的主显示器上时,这可以正常工作。但是,当它在我的辅助显示器上时(笔记本电脑显示器,它更小,但我猜应该无关紧要)按钮没有正确放置(见图)。由于有时我必须添加多个按钮,因此手动放置它们并按预期重新调整它们的形状非常麻烦。
附加信息,可能重要也可能不重要 - 我已将所有单元格的宽度更改为 10 像素。
另一个附加说明,我将框放在右边越远,实际位置和想要的位置之间的差异就越大。
小智 0
尝试下面的代码;(它插入多个按钮,但不是高度调整,而是将其放置在活动单元格中,因此无论您使用什么屏幕或显示器,我都会保留在 sanme 位置)
Sub ADD_A_BUTTON()
Dim btn As Button
Application.ScreenUpdating = False
ActiveSheet.Buttons.Delete
Dim t As Range
For i = 2 To 6 Step 2 'IF YOU ADD MULTIPLE BUTTONS IF ONLY ONE THEN MAKE THE ROW NUMBER YOU WANT TO THE EXACT SAME ROW NUMBER EG. FOR I 2 TO 2
Set t = ActiveSheet.Range(Cells(i, 3), Cells(i, 3)) 'THE COLUMN TO PLACE
Set btn = ActiveSheet.Buttons.Add(t.Left, t.Top, t.Width, t.Height)
With btn
.OnAction = "btnS"
.Caption = "Btn " & i
.Name = "Btn" & i
End With
Next i
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)