将命令按钮单元格地址的位置存储到VBA中的变量

时间:2016-02-06 04:51:10

标签: excel excel-vba vba

好的,所以我正在使用Excel并尝试根据我点击的命令按钮的位置获取单元格地址。我想将该单元格地址存储在变量中,因为我单击该按钮将在单击该按钮时弹出的用户表单的下一个代码中使用。我看过这个链接:Store location of cell address to variable in VBA,这与我正在尝试做的类似,但我似乎无法使用ActiveSheet.Shapes(Application.Caller).TopLeftCell.Address来处理基于左上角的地址命令按钮。我正在尝试这样做,所以我可以使用下一部分中的相同代码来添加我添加的每个类似按钮,而无需根据按钮的位置手动更改代码。

对于Excel和VBA来说,我是新手,所以任何帮助都会受到赞赏。

编辑:

我尝试添加代码但是我收到运行时错误'1004'无法获取Worksheet类的Buttons属性。我有这个

Sub Button2_Click()
    Dim BtRng As Range

    Set Btnrng = ActiveSheet.Buttons(Application.Caller).TopLeftCell

    MsgBox Btnrng.Address
    Btnrng.Offset(3, 3) = "Hello"
    formAddBill.Show

End Sub

此按钮还会弹出用户表单以输入信息。错误发生在Set Btnrng = ActiveSheet.Buttons(Application.Caller).TopLeftCell

1 个答案:

答案 0 :(得分:0)

如果您使用的是application.caller,那么我假设您的按钮来自forms.control工具箱。这使生活变得更加容易。

使用以下代码示例分配每个按钮:

Sub Rng_Butn_Clicked()
    Dim BtRng As Range
    Set Btnrng = ActiveSheet.Buttons(Application.Caller).TopLeftCell
    MsgBox Btnrng.Address
    Btnrng.Offset(3, 3) = "Hello"
End Sub

如果您使用的是activex工具栏中的命令按钮,则会让人感到有些困惑。一次做一个很容易

Private Sub CommandButton1_Click()
    Me.CommandButton1.TopLeftCell.Offset(0, 1) = "Hi"
    Me.CommandButton1.TopLeftCell.Offset(, 2).Interior.Color = vbBlue
    MsgBox Me.CommandButton1.TopLeftCell.Address
End Sub

但是将一个代码分配给许多activex命令按钮并不容易,如果你想将一个代码分配给多个按钮,我宁愿使用表单按钮。

编辑:如果您收到此错误

enter image description here

您可能将代码放在命令按钮中。请重新阅读我的答案。

这就是我所指的:Form Controls& ActiveX控件

enter image description here