我一直在寻找解决这个问题的互联网,但出于某种原因,我永远找不到与使用.onAction选择特定单元格直接相关的任何内容。
我正在使用另一个问题的答案作为参考:
在循环遍历形状的部分中,脚本会为每个形状分配.onAction事件。每当在Excel 2010中运行时,我都会收到错误:
Cannot run the macro "SelectCell "Sheet 1","$C$10"".
The macro may not be available in this workbook or all macros may be disabled.
我是excel的VBA脚本新手所以我不知道它是否是格式化,但我知道它与这一行有关。
.OnAction = "'SelectCell """ & ws.Name & """,""" & cll.Address & """'"
我为SelectCell创建了一个子过程,以显示作为调试发送的值。同样的错误。
我尝试让excel允许所有宏并禁用所有宏但它对错误没有影响。
如果有人知道我哪里出错或者我可以用来进一步教育自己的资源,我们将不胜感激。
答案 0 :(得分:0)
这个(常规模块中的子代)对我有用。
Sub SelectCell(sht As String, rng As String)
ThisWorkbook.Sheets(sht).Range(rng).Select
End Sub
Sub Assign()
ActiveSheet.Shapes(1).OnAction = "'SelectCell """ & _
Selection.Parent.Name & """, """ & _
Selection.Address() & """'"
End Sub
如果SelectCell
位于工作表代码模块中,则需要包含工作表代码名称:
Sub Assign()
ActiveSheet.Shapes(1).OnAction = "'Sheet1.SelectCell """ & _
Selection.Parent.Name & """, """ & _
Selection.Address() & """'"
End Sub
答案 1 :(得分:-1)
如果我正确读到这个," SelectCell"是一个宏名称,你传入"表1"," $ C $ 10"作为参数(作为字符串)。每当您在赋值运算符(等号)的右侧进行调用时,参数都需要与父对象一起传递。例如,
.OnAction = "SelectCell "Sheet 1","$C$10""
错了,
.OnAction = "SelectCell ("Sheet 1","$C$10")"
是对的。
尝试一下,但是如果没有太多代码,我就无法做到。如果宏位于另一个模块中,您也可以尝试使用完全限定的宏名称。