Excel VBA:获取单击按钮的行

Jor*_*ort 16 excel vba row click button

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

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

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

GSe*_*erg 22

每个人Shape都有TopLeftCell财产.它包含一个单元格,其中左上角的形状位于其中.

  • 完全正常工作:MsgBox("按下按钮的行:"和ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row).再次感谢! (14认同)
  • 我明白了,谢谢你的回答.我也想知道如何获得被点击的形状的名称,但经过一些搜索我发现:ActiveSheet.Shapes(Application.Caller).Name.我将尝试使用形状的TopLeftCell属性,让你知道它什么时候工作.再次感谢您指出我正确的方向! (2认同)

Fra*_*fin 19

这里提到了一个很好的解决方案: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 
Run Code Online (Sandbox Code Playgroud)


小智 6

很好的答案.顺便说一下它也适用于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
Run Code Online (Sandbox Code Playgroud)