将宏指定给按钮,该按钮在按钮所在的指定行上执行宏。=

时间:2018-03-21 01:00:53

标签: excel vba excel-vba

我需要帮助VBA使用一个代码,其中按下按钮执行指定的宏,其中宏被指定执行按下按钮的位置。

基本上,我创建了一个跟踪工作簿,我通常会输入一个新的"任务"通过宏,这会在行上添加一个新行和一个新按钮。

我遇到的问题是我想使用相同的宏(一旦任务完成,它会剪切并粘贴到"历史记录"表格中)按钮所在的特定行。

我该怎么做?这有可能吗?以下是我的一步一步的想法

  • 按" AddTask" button =创建一个新行,其中包含来自用户的数据输入"已完成"同一行上的按钮
  • 打上"已完成"按钮到已添加的行,这样当Macro" Complete"运行时,它只会专门运行到按下按钮的行。

这会有所帮助,因为我可能会在任务#41(第41行)之前完成任务#53(第53行),所以我想删除第53行。

我需要宏和VBA。

1 个答案:

答案 0 :(得分:0)

您可以使用Application.Caller来确定调用Sub的内容。在“表单”按钮的情况下,它将按钮的名称作为字符串返回。 (有关详细信息,请参阅在线帮助)。然后使用ActiveSheet Buttons集合检索按钮,使用TopLeftCell获取工作表上的位置。如果从其他来源调用Sub,则需要进行错误处理才能正常退出。

Sub Complete()
    Dim rng As Range

    If TypeName(Application.Caller) <> "String" Then Exit Sub
    On Error Resume Next
        Set rng = ActiveSheet.Buttons(Application.Caller).TopLeftCell.EntireRow
    On Error GoTo 0
    If rng Is Nothing Then Exit Sub

    ' rng now refers to the row that the clicked button is on
    '... rest of your code

End Sub