Salir de form genera bucle infinito

Buenos días Carlos.
Necesito ayuda con un Texbox. Quiero validar que después de actualizar me verifique si el dato ya existe en un rango, y en caso de ser verdadero me muestre un msgbox y salga del formulario. Pero al ejecutar no sale sino que queda en un bucle y me arroja "Error de Automatización"
****************************** 
Private Sub TBox_serial_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean) 
rangoserial = "U3:U" & ultimoserial - 1 'rango donde buscar 
Set miserial = ActiveSheet.Range(rangoserial).Find(TBox_serial.Value, LookIn:=xlValues, LookAt:=xlWhole) 
    If Not miserial Is Nothing Then 
        MsgBox "Serial ya existe" 
        Unload Me 
    End If 
End Sub 
****************************** 
¿Cómo puedo hacerlo entonces?
De antemano muchas gracias.

1 respuesta

Respuesta
1
Por eso el bucle
Ahora cuando pones que un rango es definido a un string especifica luego de la segunda linea del codigo esto asi
dim rangoserial as range
el comando unload me es muy generico pero por ahora dejalo
creo que con eso tienes.
Saludos!
Recuerda visitar www.ayconcol.com son expertos en el tema ellos también responden de forma gratuita directamente en la web o por todo-expertos en un pequeño espacio en la página principal, si querés aprender más puedes ingresar en www.ayconcol.com/foro creas usuario y todo y listo! Si deseas ellos también elaboran aplicativos, páginas web y soporte a computadores a un costo muy bajo!
Gracias por la respuesta Carlos.
Con AfterUpdate me sigue generando "Error de Automatización"
Cuando declaro rangoserial como Range me genera error: "Variable de objeto o bloque With no establecido".
Private Sub TBox_serial_AfterUpdate()
'Dim rangoserial As Range
rangoserial = "U3:U" & ultimoSerial 'rango donde buscar
Set miSerial = ActiveSheet.Range(rangoserial).Find(TBox_serial.Value, LookIn:=xlValues, LookAt:=xlWhole)
    If Not miSerial Is Nothing Then
        MsgBox "Serial ya existe"
        Unload Me
    End If
End Sub
Te mando la macro como debe quedarte, ojo puse un valor a ultimoserial pero pues sobra decir queborres esa linea porque vos tendrás un código que te arroje ese valor numérico.
Private Sub TBox_serial_AfterUpdate()
ultimoserial = 13
rangoserial = "U3:U" + CStr(ultimoserial)
With Range(rangoserial)
Set miserial = .Find(TBox_serial, LookIn:=xlValues)
    If Not miserial Is Nothing Then
        MsgBox prompt:="Serial ya existe", Title:="tittle"
        Unload UserForm1
    End If
End With
End
End Sub
Bueno saludos, ya lo probé y funciona perfecto.
Recuerda visitar www.ayconcol.com son expertos en el tema ellos también responden de forma gratuita directamente en la web o por todo-expertos en un pequeño espacio en la página principal, si querés aprender más puedes ingresar en www.ayconcol.com/foro creas usuario y todo y listo! Si deseas ellos también elaboran aplicativos, páginas web y soporte a computadores a un costo muy bajo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas