Como validar en un botón buscar un dato no encontrado en excel vba

Estoy trabajando con un formulario de facturas, en el que tengo un botón buscar, el cual al darle clic aparece un INPUTBOX preguntando por el numero de factura, pero no se como programar cuando se digite un numero que no este en la BD, (por ejemplo las facturas van desde 2525 hasta 2549); es decir, si escribo 2550 que con un msgbox diga que esa factura no existe...

1 respuesta

Respuesta
1

Hol.a

Solo mencionas que tienes un "InputBox" pero no has dicho como buscas el dato que es lo principal para poder ayudarte.

Salu2

Abraham Valencia

Hola Abraham, muchas gracias por escribir..

El Inputbox lo utilizo para buscar el número de factura que ya este en base de datos, este es el código:

Sheets("facturas").Select
Range("D2").Select 
fac = InputBox("Ingrese el No. de Factura para ver los datos", "Buscar")
txtfact.Value = fac
If IsNumeric(fac) Then
Columns(4).Find(What:=fac, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False_, SearchFormat:=False).Activate
ActiveCell.Offset(0, 0).Select
txtcod.Value = ActiveCell.Offset(0, -3)
txtnombre.Value = ActiveCell.Offset(0, -2)
txtnit.Value = ActiveCell.Offset(0, -1)

Else
MsgBox "El Número de factura ingresado no es un número", vbInformation, "Error"
txtfact.Text = " "

end if

Con este código, me encuentra los datos que necesito ver, solo necesito esa validación que mencione arriba en el mensaje inicial.

Muchas gracias.

Cámbialo así:

Sheets("facturas").Select
Range("D2").Select
fac = InputBox("Ingrese el No. de Factura para ver los datos", "Buscar")
txtfact.Value = fac
If IsNumeric(fac) Then
    Columns(4).Find(What:=fac, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False_, SearchFormat:=False).Activate
    If Buscador Is Nothing Then
        MsgBox "El Número de factura ingresado no es un número", vbInformation, "Error"
        txtfact.Text = " "
        Exit Sub
    Else
        ActiveCell.Offset(0, 0).Select
        txtcod.Value = ActiveCell.Offset(0, -3)
        txtnombre.Value = ActiveCell.Offset(0, -2)
        txtnit.Value = ActiveCell.Offset(0, -1)
    End If
End If

Salu2

Abraham Valencia

Hola Abraham, muchas gracias por tu ayuda.

Lo que pasa es que de pronto no fui claro en lo que necesito, te voy a mostrar el error que me sale cuando dígito un numero de factura que no existe. 

La factura 2580 no esta en la base de datos, entonces como no existe, me saca este error, lo que yo quiero es que si dígito un numero no existente, no me salga este error, sino que yo le pueda colocar un mensaje propio y ademas, que no se salga hasta el editor de visual basic.

Yo puse el código tal cual me lo enviaste, pero si dígito una factura que no existe, me sigue saliendo.

Muchas gracias.

Hol.a

En el código que te puse por aquí, hay una línea que dice "If Buscador...", ese "Buscador" cámbialo por "Fac" y listo, ah, y obvio sin las comillas.

Abraham Valencia

Hola Abraham.

La verdad es que Yo lo había cambiado por la variable fac y de todas formas me sigue saliendo el mismo error.

Muchas gracias.

Hol.a

Ahora sí:

Sheets("facturas").Select
Range("D2").Select
fac = InputBox("Ingrese el No. de Factura para ver los datos", "Buscar")
txtfact.Value = fac
If IsNumeric(fac) Then
    Set Busqueda = Columns(4).Find(What:=fac, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False_, SearchFormat:=False).Activate
    If Busqueda Is Nothing Then
        MsgBox "El Número de factura ingresado no es un número", vbInformation, "Error"
        txtfact.Text = " "
        Exit Sub
    Else
        ActiveCell.Offset(0, 0).Select
        txtcod.Value = ActiveCell.Offset(0, -3)
        txtnombre.Value = ActiveCell.Offset(0, -2)
        txtnit.Value = ActiveCell.Offset(0, -1)
    End If
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas