Excel VBA:获取单击按钮的行[重复]

Posted

技术标签:

【中文标题】Excel VBA:获取单击按钮的行[重复]【英文标题】:Excel VBA: getting row of clicked button [duplicate] 【发布时间】:2011-09-08 17:08:13 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

我明白了,谢谢你的回答。我也想知道如何获取被点击的形状的名称,但经过一番搜索后,我发现了这个:ActiveSheet.Shapes(Application.Caller).Name。我将尝试使用形状的 TopLeftCell 属性,并让您知道它何时工作。再次感谢您为我指明正确的方向! 完全正常工作:MsgBox("按下按钮的行:" & ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row)。再次感谢!【参考方案2】:

试试这个:

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 

【讨论】:

对动态生成的按钮很有帮助。 那个超链接还好吗? 嗯,不,链接的帖子不相关。我已经删除了,谢谢用户【参考方案3】:

很好的答案。顺便说一句,它也适用于行号!

'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

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于Excel VBA:获取单击按钮的行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

下一个按钮用户窗体 Excel VBA

从组合框中选择下一个项目,然后单击 Excel VBA 按钮

使用 VBA Excel 单击访问表单中的按钮

html 单击按钮删除某一单元格的内容

需要 VBA 代码才能单击将内容从一个单元格移动到另一个单元格的按钮

VBA 无法获取您刚刚单击的按钮的属性