Problemas con la intentar en textbox des pues de presionar tab
"para Dante Amor"
Hola. Gracias a dante estuve aprendiendo varias cosas.
Pude hacer lo que quería que puede parecer medio rebuscado pero funciona, solo me queda poder posicionar al principio del cuadro de texto el cursos.
Explico
Tengo 3 formularios
formulario1 - userform_TP_a y formulario3
Del uno paso al TP y de este al 3 con un botón
Del TP puedo volver al uno con otro botón
Para validar dos textbox (1 y 2) utilizo 2 rutinas puestas en un modulo y para calcular un textbox3 en base a los 2 anteriores utilizo otra rutina en el mismo modulo. Todo esto lo hice porque si válido con el evento exit de los cuadros de textos no podía resolver que no validara al dar al botón volver.
El código me quedo así:
Textbox1 es talla:
Private Sub TextBox1_AfterUpdate()
Call val_peso2
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Or KeyCode = 40 Then
KeyCode = 0
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 9 Or KeyAscii = 11 Then
Call val_talla
Else
End If
End Sub
Textbox2 es el peso
Private Sub TextBox2_AfterUpdate()
Call val_peso2
If TextBox1 = "" Or TextBox2 = "" Then
TextBox4 = ""
End If
End Sub
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Or KeyCode = 40 Then
KeyCode = 0
End If
End Sub
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 9 Or KeyAscii = 11 Then
Call val_peso
Else
End If
End Sub
Modulo TP_a
Public Sub val_talla()
If userform_TP_a.TextBox1 = "" Then
MsgBox "La talla no puede estar vacia"
Cancel = True
userform_TP_a.TextBox1.Value = ""
userform_TP_a.TextBox1.SetFocus
userform_TP_a.TextBox1.SelStart = 0
userform_TP_a.TextBox4 = ""
userform_TP_a.CheckBox1 = False
userform_TP_a.CheckBox2 = False
Else
If userform_TP_a.TextBox1 < 100 Or userform_TP_a.TextBox1 > 250 Then
MsgBox "Solo pueden ingresar pacientes con talla entre 200 y 250 cm"
userform_TP_a.TextBox1 = ""
Cancel = True
userform_TP_a.TextBox1.SetFocus
Else
userform_TP_a.TextBox2.SetFocus
End If
End If
End Sub
Public Sub val_peso2()
If userform_TP_a.TextBox1 > 100 And userform_TP_a.TextBox1 < 250 Then
If userform_TP_a.TextBox2 > 50 And userform_TP_a.TextBox2 < 300 Then
Dim talla As Integer
Dim peso As Integer
Dim ibm As Integer
Dim texbox4 As Integer
talla = Val(userform_TP_a.TextBox1)
peso = Val(userform_TP_a.TextBox2)
talla = (talla / 100) ^ 2
ibm = peso / talla
userform_TP_a.TextBox4 = ibm
Else
If userform_TP_a.TextBox1 = "" Or userform_TP_a.TextBox2 = "" Then
userform_TP_a.TextBox4 = ""
Else
End If
End If
End If
End Sub
Public Sub val_peso()
If userform_TP_a.TextBox2 = "" Then
MsgBox "El peso no puede estar vacio"
Cancel = True
userform_TP_a.CheckBox1 = False
userform_TP_a.CheckBox2 = False
userform_TP_a.TextBox4 = ""
Else
If userform_TP_a.TextBox2 < 50 Or userform_TP_a.TextBox2 > 300 Then
MsgBox "Solo pueden ingresar pacientes con peso entre 50 y 300 kg"
userform_TP_a.TextBox2 = ""
Cancel = True
Exit Sub
Else
userform_TP_a.CheckBox1.SetFocus
End If
End If
End Sub
En el codigo estan agregados tambien unso checkbox que no vienen al caso y setfocus y selstar que no logro que funciones.
Anda todo muy bien, cual es el problema:
Si presiono la tecla tab valida que esta vacío el text hace todas las advertencias pero al regresar al texbox el cursor queda a la mitad no en el inicio
Si pongo un valor correcto al pasar con tab a peso el cursor se pone nuevamente en el medio del peso en vez del principio, no logro ni que funcione el foco ni que funcione volver a la intentar 0.