Excel VBA:获取单击按钮的行

时间:2011-06-05 11:26:21

标签: excel vba button row click

我正在尝试在Excel中创建一个按钮,将某个范围的单元格从活动工作簿复制到另一个工作簿。当我指定一个固定的范围时,复制这个范围非常有效,但我很难理解如何计算出点击按钮的行。

每行包含7个左右的单元格,第8个单元格包含附加宏的形状(按钮)。 当用户按下此按钮时,需要复制与包含按下按钮的行在同一行上的7个单元格。

使用ActiveCell是没有用的,因为按下按钮实际上并不将该单元格设置为活动状态。我搜索了很多,但我似乎无法找到如何获得这个价值。 一旦我获得了点击按钮的行号,我就可以自己计算出其余部分。

4 个答案:

答案 0 :(得分:21)

每个Shape都有TopLeftCell属性。它包含一个单元格,其中左上角的形状位于其中。

答案 1 :(得分:17)

这里提到了一个很好的解决方案: http://www.ozgrid.com/forum/showthread.php?t=33351&p=167317#post167317

从上面的帖子复制的黄金代码:

Sub Mainscoresheet() 
     ' Mainlineup Macro
    Dim b As Object, cs As Integer 
    Set b = ActiveSheet.Buttons(Application.Caller) 
    With b.TopLeftCell 
        cs = .Column 
    End With 
    MsgBox "Column Number " & cs 
End Sub 

答案 2 :(得分:5)

优秀的答案。顺便说一下它也适用于Rownumber!

'Same for rownumbers!
Sub Mainscoresheet() 
     ' Mainlineup Macro
    Dim b As Object, RowNumber As Integer 
    Set b = ActiveSheet.Buttons(Application.Caller) 
    With b.TopLeftCell 
        RowNumber = .Row
    End With 
    MsgBox "Row Number " & RowNumber 
End Sub

答案 3 :(得分:-1)

这也可以!选择生成的按钮所在的单元格(知道它在“ K”列中,但是也可以计算!)。

ActiveSheet.Range("K" & ActiveSheet.Buttons(Application.Caller).TopLeftCell.Row).Select