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

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

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

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

【问题讨论】:

    标签: excel vba button row click


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-18
        • 2021-07-17
        • 1970-01-01
        • 2019-05-25
        • 1970-01-01
        • 1970-01-01
        • 2019-11-25
        • 2020-11-28
        相关资源
        最近更新 更多