如何解决“无法运行宏”错误?

时间:2019-08-11 23:21:43

标签: excel vba

当我在tetr对象中使用“ Application.OnKey”时,出现了错误,但是当我使用简单的sum函数进行测试时,一切都正常。如果需要,我可以提供该类的代码。

  

错误:无法运行宏“ C:\ Path \ File.xlsm'!'MoveDown tetr”。的   宏在此工作簿中可能不可用

Sub Game()
    Dim tetr As New tetromino
    Application.OnKey "{DOWN}", "'MoveDown tetr'"
End Sub

Sub MoveDown(tetr As tetromino)
    tetr.PosY = tetr.PosY - 1
End Sub

2 个答案:

答案 0 :(得分:0)

您不能调用从UI接受参数的过程。这样的宏不能分配给功能区控件,也不能分配给键盘快捷键。

键盘快捷方式需要“重新映射”以调用一个过程,例如依次实例化tetromino类并调用MoveDown。或更改MoveDown并创建一个执行MoveDown当前正在执行的新过程。

示例:

Sub Game()
    Application.OnKey "{DOWN}", "'MoveDown'"
End Sub

Sub MoveDown()
    Dim tetr As New tetromino
    ExecuteMoveDown tetr
End Sub

Sub ExecuteMoveDown(tetr As tetromino)
    tetr.PosY = tetr.PosY - 1
End Sub

答案 1 :(得分:0)

对我来说,GetAsyncKeyState是解决方案。