我需要帮助VBA使用一个代码,其中按下按钮执行指定的宏,其中宏被指定执行按下按钮的位置。
基本上,我创建了一个跟踪工作簿,我通常会输入一个新的"任务"通过宏,这会在行上添加一个新行和一个新按钮。
我遇到的问题是我想使用相同的宏(一旦任务完成,它会剪切并粘贴到"历史记录"表格中)按钮所在的特定行。
我该怎么做?这有可能吗?以下是我的一步一步的想法
这会有所帮助,因为我可能会在任务#41(第41行)之前完成任务#53(第53行),所以我想删除第53行。
我需要宏和VBA。
答案 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