【问题标题】:Excel VBA: click button that duplicates and then inserts the rowExcel VBA:单击复制然后插入行的按钮
【发布时间】:2017-12-18 17:59:00
【问题描述】:

我正在为 Excel 中的按钮编写代码,目的是获取单击按钮的行号,复制给定行号的相应行,然后在单击按钮的原始行下方插入和移动复制的行. 例如看图片: Click here for picture before button is pressed. Click here for picture after button is pressed.

我已经根据我在网上找到的类似问题的解决方案尝试了几次代码修订,例如 herehere(以及其他地方),但我找不到解决我反复出现的错误 无法获取 Worksheet 类的 Buttons 属性。根据我在网上收集到的有关此错误的信息,当传递给工作表函数的任何参数的类型不正确或根本没有意义时,通常会发生此错误。下面我发布了我的代码的两次迭代;

    Private Sub CorrugatedR_Click()
    Dim b As Object, RowNumber As Integer
    ActiveSheet.Activate
    Set b = ActiveSheet.Buttons("CorrugatedR")
    With b.TopLeftCell
        RowNumber = .Row
        Rows(RowNumber + 1).Insert Shift:=xlDown
        Rows(RowNumber).Copy Rows(RowNumber + 1)
    End With
End Sub

另一个版本,应该做同样的事情(我一直在玩很多):

Private Sub CorrugatedR_Click()
Dim b As Object, RowNumber As Integer
ActiveSheet.Activate
ActiveSheet.Buttons("CorrugatedR").Select
ActiveSheet.Buttons("CorrugatedR").Copy
b.Paste
    With b.TopLeftCell
        RowNumber = .Row
    End With
Rows(RowNumber + 1).Insert Shift:=xlDown
Rows(RowNumber).Copy Rows(RowNumber + 1)
End Sub

一个重要的提示是,最初不是调用按钮本身的名称:ActiveSheet.Buttons("CorrugatedR") 我实现了ActiveSheet.Buttons(Application.Caller),因为有几个人提出了这个建议,但这给了我另一个错误Application.Caller = Error 2023。在进行研究之后,我认为这些问题都与以太它与打字或我不知道的事情有关的相同重复出现的问题有关;我尝试实施和使用解决方案中的信息来找到here 的相同错误,但仍然没有运气。我的直觉是问题可能出在我设置b的代码中:Set b = ActiveSheet.Buttons("CorrugatedR")

我还是 VBA 和 Excel 的新手,所以我的整个方法本身可能会被误解,我非常感谢任何帮助,我已经坚持了一段时间。

【问题讨论】:

    标签: excel vba button row typing


    【解决方案1】:

    如果您的代码位于 模块 中,此示例代码将起作用(将 CommandButton1 替换为您的按钮名称):

    Private Sub example()
        MsgBox ActiveSheet.CommandButton1.TopLeftCell.Row
    End Sub
    

    ...或者如果您的代码在工作表上:

    Private Sub CommandButton1_Click()
        MsgBox Me.CommandButton1.TopLeftCell.Row
    End Sub
    

    【讨论】:

    • 这行得通,我最初使用的是 ActiveX Controls 命令按钮;当我改为实现 Form Controls 按钮时,我能够 Assign a Macro 并从那里,我的旧代码工作。感谢您为我指明正确的方向,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    相关资源
    最近更新 更多