对于我的工作,我有时想自动创建位于特定位置的按钮,具有给定的宽度和高度。我的代码是Sub Add_Button(my_top,my_left,my_Width,my_Height)Dim
为了我的工作,我有时想自动创建位于特定位置、具有给定宽度和高度的按钮。
我的代码是
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
所以我认为代码非常简单。我用以下代码调用这个 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
现在我的问题是,当电子表格在主显示器上时,它可以正常工作。但是,当它在我的辅助显示器上时(笔记本电脑显示器,虽然较小,但我想这应该没关系),按钮的位置不正确(见图)。由于我有时必须添加多个按钮,因此手动放置它们并按预期重塑它们非常麻烦。
附加信息(可能重要也可能不重要)-我已将所有单元格的宽度更改为 10 像素。
另外需要注意的是,我将盒子放在右边越远,实际位置和想要的位置之间的差异就越大。
图像:一次在主显示器上创建按钮,一次在右侧(较小的,笔记本电脑)显示器上创建按钮。
使用此代码添加按钮时我没有遇到任何问题。此代码在三台显示器(笔记本电脑和两台台式显示器)上均有效。
Public Sub Add_Button(Target As Range, Caption As String)
Dim myBtn As Object
Set myBtn = Target.Parent.Buttons.Add(Target.Left, Target.Top, Target.Width, Target.Height)
myBtn.Caption = Caption
End Sub
Public Sub Test()
Add_Button ThisWorkbook.Worksheets("Sheet1").Range("H2:H5"), "My Button"
End Sub