如何将VBA宏绑定到特定的单元格?

时间:2015-11-25 11:47:54

标签: excel vba excel-vba

我正在处理Excel工作表,其中我按行排列数据,并且需要一种方法来运行VBA宏,该宏将根据特定行中的数据执行程序。

我努力实现的目标是找到一种机制,让用户只需点击数据后按钮就可以完成此任务。用户也应该能够复制现有的行(以及使用它的宏触发器)并执行与该新行相关的宏,而无需进行任何代码修改。

到目前为止,我所尝试的是excel按钮,但它无法绑定到某个单元格。每次添加新行时,都必须手动分配宏。 我也试过了#Worksheet_SelectionChange'过滤到包含类似链接的文本的某个列的事件。这在某种程度上工作正常,但有些用户使用箭头键在工作表内导航,如果宏单元格被选中,则意外触发宏。此外,鼠标光标在悬停时不会改变为指向手指。 最后一次尝试是尝试使用=HYPERLINK("#'Sheet1'!E3";"Run macro") - 函数并将其与“工作表_FollowHyperlink'”一起使用。但是,在这种情况下,如果超链接指向当前工作表,则不会触发事件。

那么任何新的想法或者可能会改进其中一些来克服我所描述的问题? enter image description here

1 个答案:

答案 0 :(得分:1)

以下是您如何执行此操作的示例:

  • 在单元格中添加一个按钮(MSForm,而不是ActiveX)。确保按钮的左上角位于要引用的行的单元格内。
  • 分配宏(为简单起见,我们在这里说“MM”)

在宏中:

Sub MM()
    Dim rowNumber As Long
    rowNumber = Shapes(Application.Caller).TopLeftCell.Row

    Debug.Print Range("A" & rowNumber).Value
End Sub