VBA 没有把按钮放在我想要的地方

Luk*_*kas 5 excel vba

对于我的工作,我有时想自动创建位于特定位置的按钮,具有给定的宽度和高度。

我的代码是

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)