我想在我的vba excel宏中使用键输入来执行操作。 我已经在互联网上搜索了一段时间,发现了#34; Key on Key"可能有用。但我还不了解如何使用它。
在这种情况下,我的目标是使用箭头键移动活动单元格。 (擅长已经做到了)。但是做一些额外的动作:它需要通过可靠的ms来减慢速度,并且activecell需要改变颜色" ActiveCell.Color.Index = RGB(255,0,0)"例如。
它更容易使用" A / S / W / D"要导航的关键我会很开心。
目标:某种蛇游戏
问题:如何使用键输入?
答案 0 :(得分:0)
您需要在宏中Application.OnKey "[Button]", "[sub to start]"
- 命令通过按键来启动宏,但请记住:
宏需要在Module
中,或者您需要添加路径,如:
Sub Test()
Debug.Print "OK"
End Sub
'if test is in Module
Application.OnKey "{RIGHT}", "Test"`
'if test is in sheet/userform
Application.OnKey "{RIGHT}", "Sheet1.Test"`
Application.OnKey "{RIGHT}", "UserForm1.Test"`
每次按下“向右箭头按钮”时都会执行“测试”。要停用它,只需在没有目标的情况下运行Application.OnKey "{RIGHT}"
。
Application.OnKey
将不会回归。因此,如果没有在关闭/切换/无论工作簿上设置自动停用,都可能会出现VBA错误。
答案 1 :(得分:0)
到目前为止我的代码下面, (还没有工作......:P) 使用以下网站获取有关密钥应用程序的信息 http://www.rondebruin.nl/win/s4/win012.htm
Private Sub Workbook_Activate()
Application.OnKey "{RIGHT}", "Sub sRight"
Application.OnKey "{LEFT}", "Sub sLeft"
Application.OnKey "{Down}", "Sub sDown"
Application.OnKey "{UP}", "Sub sUp"
End Sub
Sub sRight()
ActiveCell.Offset(0, 1).Select
ActiveCell.Color.Index = RGB(255, 0, 0)
End Sub
Sub sLeft()
ActiveCell.Offset(0, -1).Select
ActiveCell.Color.Index = RGB(255, 0, 0)
End Sub
Sub sDown()
ActiveCell.Offset(1, 0).Select
ActiveCell.Color.Index = RGB(255, 0, 0)
End Sub
Sub sUp()
ActiveCell.Offset(-1, 0).Select
ActiveCell.Color.Index = RGB(255, 0, 0)
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "{RIGHT}"
Application.OnKey "{LEFT}"
Application.OnKey "{Down}"
Application.OnKey "{UP}"
End Sub
答案 2 :(得分:0)
这有效。
Private Sub Workbook_Activate()
Application.OnKey "{RIGHT}", "sRight"
Application.OnKey "{LEFT}", "sLeft"
Application.OnKey "{Down}", "sDown"
Application.OnKey "{UP}", "sUp"
End Sub
Sub sRight()
ActiveCell.Offset(0, 1).Select
ActiveCell.Interior.Color = RGB(255, 0, 0)
End Sub
Sub sLeft()
ActiveCell.Offset(0, -1).Select
ActiveCell.Interior.Color = RGB(255, 0, 0)
End Sub
Sub sDown()
ActiveCell.Offset(1, 0).Select
ActiveCell.Interior.Color = RGB(255, 0, 0)
End Sub
Sub sUp()
ActiveCell.Offset(-1, 0).Select
ActiveCell.Interior.Color = RGB(255, 0, 0)
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "{RIGHT}"
Application.OnKey "{LEFT}"
Application.OnKey "{Down}"
Application.OnKey "{UP}"
End Sub