首页 > 解决方案 > 将两个按钮移动到一个范围内并彼此相邻显示

问题描述

我的电子表格中有两个buttons,我使用以下 VBA 将两个按钮移动到Range("D12:D12")

Sub Move_Buttons()

Set Range_01 = Sheet1.Range("D12:D12")
With Sheet1.Buttons("Button 1")
.Top = Range_01.Top
.Left = Range_01.Left
.Width = Range_01.Width
.Height = Range_01.Height
End With

Set Range_02 = Sheet1.Range("D12:D12")
With Sheet1.Buttons("Button 2")
.Top = Range_02.Top
.Left = Range_02.Left
.Width = Range_02.Width
.Height = Range_02.Height
End With

End Sub

到目前为止,这一切都很好。


正如您在我的代码中看到的那样,两个按钮都被移入,Range("D12:D12")因此它们在此单元格中彼此重叠。
现在,我想知道是否有办法将两个按钮放在彼此旁边,Range("D12:D12")以便用户仍然能够看到它们?

我知道我可以通过
a) 将其中一个按钮放入Range("E12:E12")
b) 手动为其设置.Top Left .Width .Height条件来解决问题

但是,我更喜欢一种灵活的解决方案,其中按钮都保留在其中但Range("D12:D12")带有.Width.50/50

标签: excelvba

解决方案


但是,我更喜欢一个灵活的解决方案,其中按钮都保留在 Range("D12:D12") 中,但 .Width 为 50/50。

逻辑

  1. 两个按钮的Width变成一半。
  2. 第二个按钮的位置将在第一个按钮之后。LeftButton1 + WidthButton1。

代码

这是你正在尝试的吗?此外,由于您正在处理相同的范围,因此您不需要Range_01and Range_02。一个会做的。

Sub Move_Buttons()
    Dim Range_01 As Range

    Set Range_01 = Sheet1.Range("D12:D12")

    With Sheet1.Buttons("Button 1")
        .Top = Range_01.Top
        .Left = Range_01.Left
        .Width = Range_01.Width / 2 '<~~ This becomes half
        .Height = Range_01.Height
    End With

    With Sheet1.Buttons("Button 2")
        .Top = Range_01.Top
        '~~> And this changes as mentioned above in the LOGIC section
        .Left = Sheet1.Buttons("Button 1").Left + Sheet1.Buttons("Button 1").Width
        .Width = Range_01.Width / 2 '<~~ This becomes half
        .Height = Range_01.Height
    End With
End Sub

在此处输入图像描述


推荐阅读