我正在尝试在Excel中创建一个按钮,将某个范围的单元格从活动工作簿复制到另一个工作簿。当我指定一个固定的范围时,复制这个范围非常有效,但我很难理解如何计算出点击按钮的行。
每行包含7个左右的单元格,第8个单元格包含附加宏的形状(按钮)。 当用户按下此按钮时,需要复制与包含按下按钮的行在同一行上的7个单元格。
使用ActiveCell是没有用的,因为按下按钮实际上并不将该单元格设置为活动状态。我搜索了很多,但我似乎无法找到如何获得这个价值。 一旦我获得了点击按钮的行号,我就可以自己计算出其余部分。
答案 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