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

我正在处理一个Excel表格,在这个表格中,我将数据组织成行,并且需要一种方法来运行VBAmacros,它将根据特定行中的数据执行程序。

我正在努力实现的是find一种机制,让用户只需点击button就可以完成这个任务。 另外,用户应该能够复制现有的行(和macros触发器),并执行与新行相关的macros,而不必进行任何代码修改。

我到目前为止所尝试的是excelbutton,但它无法绑定到某个单元格。 每次添加新行时,也必须手动分配macros。 我也试着“Worksheet_SelectionChange”事件过滤到包含链接文本的某个列。 这样可以正常工作,但有些用户使用箭头键在表单内导航,如果macros单元格被选中,则会意外触发macros。 另外,鼠标光标在hover时不会变成指向手指。 最后一次尝试是尝试=HYPERLINK("#'Sheet1'!E3";"Run macro")function,并将其与“Worksheet_FollowHyperlink”一起使用。 但是,在这种情况下,如果超链接指向当前表单,则不会触发事件。

那么有没有什么新的想法,或者可以改进其中的一些来克服我所描述的问题? 在这里输入图像说明

这里有一个如何做到这一点的例子:

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

在macros观:

 Sub MM() Dim rowNumber As Long rowNumber = Shapes(Application.Caller).TopLeftCell.Row Debug.Print Range("A" & rowNumber).Value End Sub