0
我正在处理一个带有多个文本框的用户窗体,它们的排列方式与Excel图表一样。 我已经设置了TabIndexes,并且它们与TAB/shift + TAB完美搭配。但是,按箭头键的反应并不是我所期望的。 我命名为这样的那些文本框:在用户窗体的文本框中的箭头键,VBA
boxA1 boxB1 boxC1 boxD1
boxA2 boxB2 boxC2 boxD2 ...
boxA3 boxB3 boxC3 boxD3
:
:
假设焦点在boxB1。按下下箭头键时,我希望焦点转到boxB2,但它会转到boxA3或其他东西。
我试过这段代码:
Private Sub boxB1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case vbKeyDown
boxB2.SetFocus
Case vbKeyUp
boxA10.SetFocus
End Select
End Sub
它工作得很好,但是,如果只有我的几个形式的文本框,这是一个伟大的和明确的解决方案。但是我的表单中有大约70个文本框,这会使我的代码变大并且真正重复。 是否有任何参数可以调整以使其正确? 还是有什么功能,我可以使用如下?只是sudo,你知道的。
Private Sub name_i_KeyDown(ByVal KeyCode as MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case vbKeyDown
Controls("name_" & i+1).SetFocus
Case vbKeyUp
Controls("name_" & i-1).SetFocus
End Select
End Sub
谢谢!
您需要一个包含绑定到每个文本框的通用keyDown/up处理程序的类模块。想知道这是如何工作的,请参阅:http://jkp-ads.com/Articles/ControlHandler00.asp – jkpieterse