No puedo con Error 13 - Type Mismatch

Tengo este código en VBA que hace lo siguiente

* Busca el ultimo valor capturado

* Busca la tolerancia (rango) para comparar el ultimo dato capturado y el actual

* Se captura un valor mediante un formulario, (Textbox5) puede ser entero o fracción o negativo

Si capturo números enteros trabaja bien pero si capturo un numero negativo o comienzo por un punto me marca el error 13 type mismatch y no puedo con el, su ayuda por favor, aquí el código, la primera rutina valida que se ingresen solo números punto o signo negativo, la segunda rutina es la que tiene el error al hacer la resta de el textbox5 - el dato anterior. (Esta en negrita ycursiva) Muchas Gracias

Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Dato 5 Angulo Fb - Solo permite ingresar nros, punto y guion

If KeyAscii <> 46 And KeyAscii <> 45 Then
If KeyAscii < 48 Or KeyAscii > 57 Then
KeyAscii = 0: MsgBox "Error en el dato. Solo se aceptan valores numéricos"
End If
End If

End Sub

Private Sub TextBox5_Change()
Dim last_rec As Long
Dim last_fb1 As Double
Dim tol_rango As Double

' encontrar el ultimo registro grabado
last_rec = Sheets("Datag").Range("F" & Rows.Count).End(xlUp).Row

' asignar el valor del ultimo dato Fb a variable last_fb1
last_fb1 = Worksheets("Datag").Range("F" & last_rec).Value

' asignar tolerancia dato a dato a variable t1
t1 = Worksheets("Menu").Range("G30").Value

tol_rango = TextBox5 - last_fb1

If tol_rango > t1 Then
MsgBox "HAS INGRESADO UN DATO MAYOR A LA TOLERANCIA ADMITIDA RESPECTO AL DATO ANTERIOR"
End If

End Sub

1 Respuesta

Respuesta
1

El textbox5 sigue siendo un texto aunque solo le permitas el ingreso de nros y algún separador.

Intenta de este modo:

If TextBox5 <> "" Then tol_rango = Cdbl(TextBox5 )- last_fb1

Estoy evaluando si el control está vacío o no para que no de error la conversión a Double.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas