Activar UserForm al buscar un dato que no se encuentra?

Buenas tardes, Expertos ustedes siempre me han sido de mucha ayuda y se los agradezco mucho.

tengo un excel donde se remiten libros , al cual tiene 2 hojas "DETALLE" Y "REMISIÓN". En "REMISIÓN" en la celda 'A19' , tengo un buscarv , este le dígito un código de barras y lo busca en la hoja 'DETALLE', el buscarv si no encuentra el dato arroja la frase "no existe", comenzando este en la celda "B19" , lo que deseo es que si el buscarv no encuentra el código, se active un UserForm el cual ya lo tengo editado ,para que alimente la base de datos en la hoja "DETALLE", este UserForm lo activo mediante un botón , pero quisiera que

si el buscarv no encuentra el código, tal vez que salga un MsgBox diciendo "código no existe y al aceptar active el UserForm.

espero no este pidiendo mucho¡

Respuesta
1

Sigue los siguientes pasos:

1. Cambia tu fórmula buscarv por esta

=SI(ESERROR(BUSCARV(B19,detalle! B19:C24, 2,0)),"no existe", BUSCARV(B19, detalle!B19:C24,2,0))

2. Lo que no pusiste es en qué celda pones el código de barras, yo estoy poniendo B19 (marcado en negritas en la fórmula), cambia esta celda por la celda donde pones el código.

3. Instrucciones para copiar una macro
3.1. Abre tu hoja de excel
3.2. Para abrir Vba-macros y poder pegar la macro, Presiona ALt + F11
3.3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(Remisión)
3.4. Del lado derecho copia la macro

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dam
If Not Intersect(Target, Range("B19")) Is Nothing Then
If Range("A19").Value = "no existe" Then
UserForm1.Show
End If
End If
End Sub

4. De igual forma, en la macro estoy poniendo que la celda donde pones el código de barras el al B19, también la tienes que cambiar aquí

5. En esta línea de la macro, tienes que poner el nombre de tu userform, yo le puse Userform1, pero le tienes que poner el nombre del tuyo.

UserForm1.Show

6. Guarda y listo, cada vez que digites un còdigo de barras y no lo encuentre en detalle, se activara tu userform

Saludos. Dam

Si es lo que necesitas.

hola gracias po responder tan pronto, en este instante voy a probar y ya te comento

ok

hola Dam

disculpa es verdad no te coloque en que celda iba el codigo de barras era "A19"

bueno te comento que me alegre porque al fin pude ver que se habría el Userform

al pegar el buscar v y hacerle los cambios no me daba asi que realice este:

=SI(A19="";"";SI.ERROR(BUSCARV(A19;DETALLE!$A$2:$B$2654;2;0);"No existe")) y

pero se me olvido otro detalle y es en la hoja "Remision" el buscarv se ejecuta colocando el codigos de barras desde "A19 : A53" al igual la respuesta del buscarv que va de "B19:B53"

tu codigo me resulto genial porque se abrio el UserForm, pero solamente en "A19:B19"

claro modifique algo para que se ejecutara en "B19" Dime si ES por que lo modifique?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dam
If Not Intersect(Target, Range("B19")) Is Nothing Then
If Range("B19").Value = "No existe" Then
frmCaptura.Show
End If
End If
End Sub

ya probe de otr forma pero no me sale

de antemano muchas gracias

espero pronto tu respuesta

Si entendí bien, los códigos los pones en la columna A, la fórmula de buscarv está en la columna B

Te cambio la macro

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dam
If Not Intersect(Target, Range("A19:A53")) Is Nothing Then
If Range("B" & Target.Row).Value = "No existe" Then
UserForm1.Show
End If
End If
End Sub

Nota: La macro funciona cuando cambias un código en el rango de A19 a A53, si copias muchos códigos a la vez, sólo evaluará el primero que copiaste.

Prueba y me comentas.

Saludos. Dam

Hola dam , gracias por tu respuesta


algo pasa, cuando inserto el código de barras y el libro No existe en la base de datos
la macro no se activa en ese momento , pero al elegir la celda con el mouse "A19" que es donde tengo el código de barras se activa ,
en el primer código que me diste si se activa inmediatamente después del "no existe"
espero pronto tu respuesta
ok

hola dam , gracias por ese aporte ya lo solucione

solo cambie el rango de celdas

If Not Intersect(Target, Range("A19:A53")) Is Nothing Then

por

If Not Intersect(Target, Range("B19:B53")) Is Nothing Then

funciono perfecto exactamente como lo esperaba

gracias ,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas