textbox

Experto:
Usuario:
Fecha: 08/04/2006
Valoración: (3,00 sobre 5) Categoría: Microsoft Excel
16/03/2006
javiher71, usuario preguntando en Microsoft Excel
Usuario
Hola me gustaria 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 operacion (tal cual lo haria una celda del excel) se puede hacer esto? es complicado?, espero puedas ayudarme. Gracias
16/03/2006
javiher71, experto respondiendo en Microsoft Excel
Experto
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

Saludos y comenta
Gustavo
21/03/2006
javiher71, usuario preguntando en Microsoft Excel
Usuario
Gracias Gustavo desde ya por tomarte la molestia de contestarme. He intentado implementar sin exito lo que me propusiste.
Las operaciones que deberia permitir el textbox serian de + y -
Como yo lo tengo armado hasta ahora es asi:
1º un evento de textbox KeyUp que se fija si el valor que se ingreso en el textbox es Enter y no esta vacio:
If KeyAscii = 13 And Trim(TextBox1.Text) <> "" Then
2º Si esto se cumple envio los datos a otra funcion para validar que los datos sean numericos
Private Sub AceptarCant(ByVal cant As Variant)
If IsNumeric(cant) Then
Hasta ahi he llegado si puedes darme una mano te lo agradecere, el codigo 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 javiher@speedy.com.ar
21/03/2006
javiher71, experto respondiendo en Microsoft Excel
Experto
pues por que simplemente no pones lo que te pasé con la modificacion 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
08/04/2006
javiher71, usuario preguntando en Microsoft Excel
Usuario
Bueno Gustavo te agradezco la ayudo, finalmente pude solucionar el tema de las operaciones matematicas (aqui te envio 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
Enlaces patrocinados