如何在Visual Basic中使用Application on Excel Excel

时间:2015-12-08 10:17:26

标签: excel vba excel-vba

我想在我的vba excel宏中使用键输入来执行操作。 我已经在互联网上搜索了一段时间,发现了#34; Key on Key"可能有用。但我还不了解如何使用它。

在这种情况下,我的目标是使用箭头键移动活动单元格。 (擅长已经做到了)。但是做一些额外的动作:它需要通过可靠的ms来减慢速度,并且activecell需要改变颜色" ActiveCell.Color.Index = RGB(255,0,0)"例如。

它更容易使用" A / S / W / D"要导航的关键我会很开心。

目标:某种蛇游戏

问题:如何使用键输入?

3 个答案:

答案 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