Textbox

Hola me gustaría que me des una idea si esto se puede hacer.
Tengo un formulario en el que tengo varios textbox y necesito poder hacer en un textbox lo siguiente: ¿Ingresar por ejemplo +2+2 y que cuando le de ENTER me tome el valor de esa operación (tal cual lo haría una celda del excel) se puede hacer esto? ¿Es complicado?, espero puedas ayudarme. Gracias

1 respuesta

Respuesta
1
Suponiendo que el textbox se llama TextBox1, entonces en el evento Exit debes poner algo como...
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Resume Next
TextBox1.Text = Evaluate(TextBox1.Text)
End Sub
Pues por que simplemente no pones lo que te pasé con la modificación del control de error
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error Goto Salida
TextBox1.Text = Evaluate(TextBox1.Text)
Exit Sub
Salida:
MsgBox "Solo puede ingresar un número", vbCritical
End Sub
Gracias Gustavo desde ya por tomarte la molestia de contestarme. He intentado implementar sin éxito lo que me propusiste.
Las operaciones que debería permitir el textbox serian de + y -
Como yo lo tengo armado hasta ahora es así:
1º un evento de textbox KeyUp que se fija si el valor que se ingreso en el textbox es Enter y no esta vacío:
If KeyAscii = 13 And Trim(TextBox1.Text) <> "" Then
2º Si esto se cumple envío los datos a otra función para validar que los datos sean numéricos
Private Sub AceptarCant(ByVal cant As Variant)
If IsNumeric(cant) Then
Hasta ahí he llegado si puedes darme una mano te lo agradeceré, el código completo es el siguiente:
Private Sub TextBox1_KeyUp(ByVal KeyAscii As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyAscii = 13 And Trim(TextBox1.Text) <> "" Then
AceptarCant TextBox1.Text
End If
End Sub
Private Sub AceptarCant(ByVal cant As Variant)
If IsNumeric(cant) Then
If CInt(cant) < 1 Or CInt(cant) > 10 Then
TextBox1.Text = ""
TextBox1.SetFocus
MsgBox "Solo puede ingresar un Número entre 1 y 10", vbCritical
Else
TextBox2.Enabled = True
cantidad = CInt(TextBox1.Text)
bandera = CInt(TextBox1.Text)
TextBox1.Enabled = False
TextBox2.Enabled = True
TextBox2.SetFocus
End If
Else
TextBox1.Text = ""
TextBox1.SetFocus
MsgBox "Solo puede ingresar un Número", vbCritical
End If
End Sub
MI MAIL ES [email protected]
Bueno Gustavo te agradezco la ayudo, finalmente pude solucionar el tema de las operaciones matemáticas (aquí te envío un ejemplo de la suma) gracias por tu ayuda.
Private Sub txtNumeros_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) And KeyAscii <> Asc("+") And KeyAscii <> Asc("-") Then
KeyAscii = 0
End If
MsgBox KeyAscii.Value
If KeyAscii.Value = 13 Then
a = Len(txtNumeros.Text) 'aca me da el largo del texto
cadena = txtNumeros.Text
aux1 = 0
aux2 = 0
For i = 1 To a + 1 'recorro todo el string
deauno = Mid(cadena, i, 1)
If deauno <> "+" And i <= a Then
num = num + deauno
' (Mid(cadena, i, 1))
aux1 = CInt(num)
Else
aux2 = aux2 + aux1 ' aca guardo la primera cifra
aux1 = 0
num = ""
End If
Next
txtNumeros.Text = aux2
Command1.SetFocus
End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas