当我在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
答案 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是解决方案。