Törölt nick Creative Commons License 2009.09.12 0 0 10103
Itt egy lehetséges megoldás. Az elv az, hogy amikor a lefelé nyilat nyomja a felhasználó, letiltjuk az adott vezérlőelem alatti vezérlőelemet. Amikor elengedi a billentyűt, akkor újra engedélyezzük. Ezért tehát a kód szempontjából fontos, hogy milyen sorrendben vannak a vezérlők egymás alatt. Ha például az alábbi vezérlők vannak az alábbi sorrendben

felül: TextBox1
középen: TextBox2
alul: ComboBox1

akkor a TextBox1 eseménykezelőjében a TextBox2-t kell letiltani majd engedélyezni. VBA:
************************************
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 40 Then TextBox2.Enabled = False
End Sub

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
TextBox2.Enabled = True
End Sub

Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 40 Then ComboBox1.Enabled = False
End Sub

Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
ComboBox1.Enabled = True
End Sub
************************************
(KeyCode = 40 a lefelé nyíl kódja.)

Na most, ez biztosan működik 2003-as Excelben, teszteltem. Viszont elképzelhető, hogy 2007-ben valami változás volt, pl. ha TextBox2 le van tiltva, akkor továbblép ComboBox1-re, ezt nem tudom. De ezen az elven akkor is lehet működő kódot alkotni, csak kicsit bonyolultabb lesz.
Előzmény: Törölt nick (10101)