【问题标题】:Excel 2010 - Error: Cannot run the macro SelectCell using .onActionExcel 2010 - 错误:无法使用 .onAction 运行宏 SelectCell
【发布时间】:2015-02-10 06:27:43
【问题描述】:

我一直在互联网上寻找解决此问题的方法,但由于某种原因,我永远找不到与使用 .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 允许所有宏并禁用所有宏,但它对错误没有影响。

如果有人知道我哪里出错了,或者有任何资源可以用来进一步教育自己,我们将不胜感激。

【问题讨论】:

  • SelectCell 在哪里定义 - 在常规模块中还是在工作表模块中?去掉参数会运行吗?

标签: vba excel


【解决方案1】:

这(常规模块中的两个子)对我有用。

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

【讨论】:

    【解决方案2】:

    如果我没看错,“SelectCell”是一个宏名称,而您将“Sheet 1”、“$C$10”作为参数(作为字符串)传入。每当您在赋值运算符(等号)的右侧进行调用时,都需要使用括号传入参数。例如,

    .OnAction = "SelectCell "Sheet 1","$C$10""
    

    错了,

    .OnAction = "SelectCell ("Sheet 1","$C$10")"
    

    是对的。

    尝试一下,但如果没有太多代码,我就无法完成。您也可以尝试使用完全限定的宏名称,以防宏位于另一个模块中。

    【讨论】:

    • 如果没有封闭的单引号,那将无法工作,并且在将参数传递给 onAction 时不需要使用括号。
    • 尝试使用完全限定的宏名称,看看是否可行。 Ex- VBAproject.module1.selectCell
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多