Ich arbeite an einem Benutzerformular mit mehreren Textfeldern, die genau wie ein Excel-Diagramm angeordnet sind. Ich habe die TabIndexes eingestellt, und sie funktionieren perfekt mit TAB/shift + TAB. Das Drücken der Pfeiltasten ist jedoch nicht das, was ich erwartet habe. Ich nannte diese Textfelder wie folgt aus:Pfeiltaste in einem Textfeld eines Benutzerformulars, VBA
boxA1 boxB1 boxC1 boxD1
boxA2 boxB2 boxC2 boxD2 ...
boxA3 boxB3 boxC3 boxD3
:
:
Unter der Annahme, dass der Fokus auf boxB1 ist. Wenn ich die Abwärtspfeiltaste drücke, möchte ich, dass der Fokus auf BoxB2 geht, aber auf BoxA3 oder so.
Ich habe diesen Code versucht:
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
es funktioniert gut, aber wenn es nur mehrere Textfelder in meiner Form ist, ist dies eine große und klare Lösung. Aber es gibt ungefähr 70 Textfelder in meiner Form, dadurch wird mein Code groß und wirklich dupliziert. Gibt es irgendwelche Parameter, die ich einstellen kann, um es richtig zu machen? Oder gibt es irgendeine Funktion, die ich verwenden kann, wie unten? Nur Sudo, weißt du?
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
Vielen Dank!
Sie benötigen ein Klassenmodul mit einem generischen keyDown/up-Handler, den Sie an jedes Textfeld anbinden. Eine Vorstellung davon, wie das funktioniert, finden Sie unter: http://jkp-ads.com/Articles/ControlHandler00.asp – jkpieterse