FORMULARIO con varios textbox que no cambian al dar enter

Tengo un formulario con varios textbox

El cual tengo asignado TABINDEX por numero

El problema esta que (AVECES no siempre) este al dar enter no sigue indicaciones de pasar al siguiente textbox por cual es molesto...

En cada textbox tengo esto:

Private Sub TextBox8_AfterUpdate()
ActiveSheet.Unprotect
ActiveSheet.Range("AB953").Value = TextBox8.Text
ActiveSheet.Range("AB954").Value = TextBox7.Text
ActiveSheet.Range("AB955").Value = TextBox6.Text
ActiveSheet.Range("AB956").Value = TextBox5.Text
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True
End Sub

Private Sub TextBox8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub

2 Respuestas

Respuesta
1

Revisa bien la numeración del tabindex de cada textbox, debe ir en ascendente desde el textbox1 hasta el 8, o hasta el textbox que tengas.

El código que pusiste no afecta para pasar de un textbox a otro, tal vez tienes otro código.

BUENO pues tengo frame1 en el cual los primeros textbox del 1 al 4

Y su tabindex es de 0 para el primer textbox y 3 para el 4to.

EN EL SEGUNDO frame2 tengo los otros 4 del 5 al 8 y también su tabindex es de 0 para el 5 y 3 para el 8tavo textbox (que es el que te puse)

Además que al incicializar el userform tengo puesto que me selecciones siempre en el textbox vacío...

¿Y del textbo8 que está en el frame 2 después del enter a dónde quieres que pase?

Ya probé y del textbox8 pasa al textbox1.

Incluso cambié el tabindex desde el 0 hasta el 7 y después de dar enter en textbox8 se pasa al textbox1.

Respuesta
1

Este ejemplo puede ayudarte

Private Sub Text1_KeyPress (KeyAscii As Integer)
   If KeyAscii = 13 Then
      SendKeys "{tab}"
      KeyAscii = 0
   End If
End Sub

Es posible crear una función para que no escribas esto en cada uno de tus textboxes...

Suerte y que tengas un excelente día

tengo 28 textbox hay que aplicarlo para todos???

Si, pero no

Crea una función...

Espero que alguien me ilumine ya que hace mucho no hago funciones en vb

sub EnterTab(obj as object, KeyAscii as integer)

If KeyAscii = 13 Then
      SendKeys "{tab}"
      KeyAscii = 0
   End If

end sub

A lo que en cada uno de los textboxes o incluso en el evento keypress del formulario puedes usarlo así

private sub formulario form_keypress(KeyAscii as integer)

EnterTab (me,KeyAscii)

end sub

Algo así...

Ojala no me equivoque

Avisame si te funciona o no... y juntos solucionamos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas