2015-12-08 107 views
1

我想在我的vba excel宏中使用键输入来预制操作。 我一直在网上搜索一段时间,发现“应用程序的关键”可能是有用的。但我不明白如何使用它。如何在Visual Basic中使用Key中的应用程序Excel

在这种情况下,我的目标是使用箭头键移动活动单元格。 (这已经超越了)。但是需要做一些额外的操作:Firts需要减慢一定数量的ms,activecell需要改变颜色“ActiveCell.Color.Index = RGB(255,0,0)”。

它将easyer使用“A/S/W/D”键导航我会很高兴两个。

目标:某种蛇游戏的

问题:如何使用按键输入?

+1

不知道如何做到这一点上工作表,我建议将头部设置为活动单元格并使用'Worksheet_SelectionChange',但是您需要防止点击以避免意外事故或保存活动单元格的前一个位置,并检查新单元格是否连续旧的!无论如何,祝你好运! ;) – R3uK

+0

存储旧的单元格将是一个挑战,但我想我能解决这个问题。我目前的确在尝试使用活动单元格作为头部。 – Cornelis

+1

它不应该,只是为了良好的实践和能够使用公共变量,您应该将您的代码放在常规模块中,并且只使用表单模块中的事件触发存储在常规模块中的过程!然后,您可以创建一个公开范围来存储活动单元格,只有当它与前一个单元格接触时(我会说Offset可能是正确测试的最简单方法) – R3uK

回答

0

你需要在宏Application.OnKey "[Button]", "[sub to start]" -command通过按压一键启动一个宏,但要记住:

宏观需求是在一个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错误。

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 
相关问题