Validar si existe registro por medio de textbox.

Buen día, de nuevo solicitando tu valioso tiempo y experiencia con lo siguiente, tengo un userform con el que hago registros en una hoja de excel pero requiero me ayudes para que pueda validar si existe el registro al momento en que lo ingrese al textbox y no al final que ya capture todos los demás datos, te anexo el código que tengo.

Private Sub cmdAceptar_Click()
Sheets("CLIENTES").Activate
Dim strfila$, ctr As Control
Set rango = Range("B:B").Find(What:=txtRFC, _
LookAt:=xlWhole, LookIn:=xlValues)
If Not rango Is Nothing Then
MsgBox "Ya Existe Registro para el RFC", vbOKOnly + vbInformation, "AVISO"
txtRazon = ""
txtRFC = ""
txtDireccion = ""
txtRFC.SetFocus
Exit Sub
End If
nextrow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
 Cells(nextrow, 1) = txtRazon.value
 Cells(nextrow, 2) = txtRFC.value
 Cells(nextrow, 3) = txtDireccion.value
 txtRFC.Text = ""
 txtRazon.Text = ""
 txtDireccion.Text = ""
 txtRFC.SetFocus
End Sub

Creo se debe poner en el evento exit del textbox pero no se como acero, gracias de antemano.

1 respuesta

Respuesta
1

Utiliza el siguiente código, revisa lo de la variable cerrar, debe ir hasta arriba de todo tu código.

Utiliza el código tal cual te lo estoy enviando, haz tus pruebas, después quita el evento UserForm_QueryClose, para que veas cuál es su funcionamiento, este evento se activa cuando cierras el userform con la 'X' que está en la esquina superior derecha. Haz tus pruebas y revisa los resultados.

'La variable cerrar debe ir hasta arriba de todos los eventos
Dim cerrar
Private Sub CommandButton1_Click()
    Sheets("CLIENTES").Activate
    Dim strfila$, ctr As Control
    nextrow = Application.WorksheetFunction.CountA(Range("A:A")) + 1
    Cells(nextrow, 1) = txtRazon.Value
    Cells(nextrow, 2) = txtRFC.Value
    Cells(nextrow, 3) = txtDireccion.Value
    txtRFC.Text = ""
    txtRazon.Text = ""
    txtDireccion.Text = ""
    txtRFC.SetFocus
End Sub
Private Sub txtRFC_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Por.DAM
    If cerrar = True Then Exit Sub
        Set rango = Range("B:B").Find(What:=txtRFC, _
        LookAt:=xlWhole, LookIn:=xlValues)
        If Not rango Is Nothing Then
        MsgBox "Ya Existe Registro para el RFC", vbOKOnly + vbInformation, "AVISO"
        txtRazon = ""
        txtDireccion = ""
        'txtRFC = ""
        'txtRFC.SetFocus
        Cancel = True
        Exit Sub
    End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'Por.DAM
'Se activa la variable cerrar, para que al cerrar el userform,
'no entre al evento txtRFC_Exit
    If CloseMode = 0 Then
        cerrar = True
    End If
End Sub

Saludos.DAM
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas