God morgon short,
Du kan använda koden längst ner i posten för att navigera mellan ActiveX textkontroller på ett och samma arbetsblad. Koden förutsätter att textrutorna har namnen TextBox1 t.o.m. TextBox8, vilket är standardnamnen. Har du bytt namn på textrutorna får du ändra i koden.
Om textrutorna finnas på Blad1 i Excel öppnar du VBA-editorn med ALT+F11 och klistrar in koden enligt nedan.
Lathund
TAB flyttar fokus till nästa textruta
SHIFT+TAB flyttar fokus till föregående textruta
CTRL+TAB infogar ett tab-tecken i den aktiva textrutan (ActiveX standardbeteende)
CTRL+ENTER infogar en manuell radbrytning i den aktiva textrutan (ActiveX standardbeteende)
Skydda arbetsblad
Observera att skydda arbetsbladet inte påverkar ActiveX kontroller för de är inte en del av cellområdet på arbetsbladet. Det kommer gå att skriva i textrutorna så länge attributet TextBox[1-8].Enabled = True. Vill du skrivskydda vissa textrutor måste du ändra attributet till Enabled = False i egenskapsfönstret. Alternativt om du kopplar textrutan till en cell på arbetsbladet så kommer skydd av arbetsbladet att förhindra uppdateringar. Dock kan man av någon anledning alltid skriva in ett tecken innan felmeddelandet dyker upp, så arbetsbladsskyddet är inte 100% tillförlitligt tillsammans med ActiveX-kontroller.
VBA Kod
' Code to navigate between ActiveX TextBox1-8 controls on the current worksheet.
' TAB: moves focus to the next textbox control
' SHIFT+TAB: moves focus to the previous textbox control
' CTRL+TAB: inserts a tab character (ASCII 9) in the active textbox
' CTRL+ENTER: inserts a line feed character (ASCII 10) in the active textbox
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 And Shift = 0 Then TextBox2.Activate
If KeyCode = 9 And Shift = 1 Then TextBox8.Activate
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 And Shift = 0 Then TextBox3.Activate
If KeyCode = 9 And Shift = 1 Then TextBox1.Activate
Private Sub TextBox3_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 And Shift = 0 Then TextBox4.Activate
If KeyCode = 9 And Shift = 1 Then TextBox2.Activate
Private Sub TextBox4_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 And Shift = 0 Then TextBox5.Activate
If KeyCode = 9 And Shift = 1 Then TextBox3.Activate
Private Sub TextBox5_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 And Shift = 0 Then TextBox6.Activate
If KeyCode = 9 And Shift = 1 Then TextBox4.Activate
Private Sub TextBox6_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 And Shift = 0 Then TextBox7.Activate
If KeyCode = 9 And Shift = 1 Then TextBox5.Activate
Private Sub TextBox7_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 And Shift = 0 Then TextBox8.Activate
If KeyCode = 9 And Shift = 1 Then TextBox6.Activate
Private Sub TextBox8_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 9 And Shift = 0 Then TextBox1.Activate
If KeyCode = 9 And Shift = 1 Then TextBox7.Activate