Macro que busque en otra hoja el valor solicitado y se posicione marcando el resultado

Necesito una macro que al indicarle el dato a buscar en la celda d3 de la hoja 2 inicie la búsqueda en la hoja 1 de la celda e8 hasta una vacía, al encontrar el dato se posicione en el y marque dicha celda con algún color momentáneamente, osea que al que quitar la búsqueda la celda regrese a su normalidad.

1 respuesta

Respuesta
1

Necesito algunas aclaraciones para desarrollar la macro:

- '.. Que al indicarle el dato a buscar..' ¿Significa qué al ingresar un valor en D3 debe ejecutarse la macro?

- De qué tipo de datos se trata: ¿Numéricos, fechas, alfanuméricos?

- '... Al que quitar la búsqueda...' No comprendo cómo le indicarás a Excel que quite la búsqueda... aclarame un poco más como sigue el proceso.

- '... Regrese a su normalidad...' Por normal entiendo que la celda vuelve a 'sin relleno', es decir a su color blanco, ¿correcto?

No valores aún, solo envía las aclaraciones por el momento.

buen día, elsa

exacto, el dato a buscar se introduce en la celda d3 hoja 2 pero no mencione que hay un botón para ejecutar la macro, perdón,

son datos numéricos ya que se trata de folios,

al decir quitar la búsqueda intento decir que no se realicen cambios en la base de datos, osea que el dato encontrado cambiara el color de fondo de la celda para ubicarlo pero que ese cambio no sea definitivo por eso digo que regrese a la normalidad osea sin fondo o con las características que tenia la celda originalmente...

muchísimas gracias por tu tiempo y por compartir tus conocimientos espero con ansias terminar mi proyecto y aprender de mas sobre vba 

Clic derecho sobre tu botón y según de qué botón se trate optarás por 'Asignar Macro' o 'Ver código'.

Si te presenta la primer opción es que se trata de un botón Formulario, entonces coloca la siguiente macro en un módulo del Editor.

Sub buscar_colorear()
'x Elsamatilde
'se busca el valor de D3 en hoja1 a partir de E8 hasta el final.
Set hox = Sheets("Hoja1")
'si D3 está vacía cancela
If [D3] = "" Then Exit Sub
dato = [D3]
'si no hay datos en col E cancela
fini = Sheets("Hoja1").Range("E" & Rows.Count).End(xlUp).Row
If fini < 8 Then MsgBox "No hay datos en col E": Exit Sub
'se realiza la búsqueda. si encuentra el valor selecciona y coloca color de relleno
Set busco = Sheets("Hoja1").Range("E8:E" & fini).Find(dato, LookIn:=xlValues, lookat:=xlWhole)
If busco Is Nothing Then
    MsgBox "No se encontró el dato buscado.", , "ATENCIÓN"
Else
    Sheets("Hoja1").Select
    ActiveSheet.Range("E" & busco.Row).Select
    Selection.Interior.ColorIndex = 3    'color rojo
End If
End Sub

Si tu botón es del grupo ActiveX, opción 'Ver código' te llevará al objeto HOJA, allí debe quedar este código (con el nombre o número de tu botón):

Private Sub CommandButton1_Click()
Call buscar_colorear
End Sub

Si esta respuesta resuelve tu consulta no olvides valorarla... sino comenta y envía aclaraciones.

 Buen día, ya coloque la macro en un modulo ya que mi botón es de tipo formulario, pero cuando ejecuto la macro solo me muestra el mensaje "NO SE ENCONTRÓ EL DATO BUSCADO" aunque el dato si existe el la columna que corrección debo hacer??? gracias ...

En mi caso no necesito agregar nada más :

Debieras revisar rango, nombre de hoja, probar con otro tipo de valores...

O enviame las 2 hojas para que te ayude a revisarlas. Mis correos aparecen en sitio que dejo al pie.

Te envió el libro para que me revises, lo único diferente es que tengo un formato de numero especial tipo código postal para las celdas de numero de folio, y otra consulta, el color rojo de la celda encontrada permanece, hay alguna manera de que regrese a sus características que tenia antes de la búsqueda, osea que regrese a su color ya sea al hacer una nueva búsqueda o al quitar el dato de la celda d3 , gracias por tu apoyo lo valoro muchísimo.

Debo hacerte notar que las 2 consultas iniciales no me fueron respondidas o no del modo exacto:

Tipo de datos: numérico fue la respuesta... faltó el detalle de un formato especial ;)

¿Cuándo quitar la marca? no me fue respondida aún...

Esperaré tu libro, allí veré el proceso y si puedo determinar cuándo volver al color original.

Sdos!

Aquí dejo ajustada la macro para el botón:

Sub buscar_colorear()
'x Elsamatilde
'se busca el valor de D3 en hoja1 a partir de E8 hasta el final.
Set hox = Sheets("Hoja1")
'si no hay datos en col E cancela
fini = hox.Range("E" & Rows.Count).End(xlUp).Row
If fini < 8 Then MsgBox "No hay datos en col E": Exit Sub
'devolver color predeterminado al rango en col E
hox.Range("E8:E" & fini).Interior.Color = RGB(182, 226, 222)
'si D3 está vacía cancela ...
If [D3] = "" Then Exit Sub
dato = [D3]
'se realiza la búsqueda. si encuentra el valor selecciona y coloca color de relleno
x = 8
While x <= fini
    If hox.Range("E" & x) = dato Then
    hox.Select
    ActiveSheet.Range("E" & x).Select
    Selection.Interior.ColorIndex = 3    'color rojo
    Exit Sub
End If
x = x + 1
Wend
End Sub

Pero como te explico por mail donde te devuelvo el libro, me parece más apropiado que la ejecutes al ingresar algún valor en D3. Ya sea que limpies la celda o que ingreses algún valor se ejecutará automáticamente sin necesidad del botón.

Cualquiera de las 2 opciones (NO las 2 juntas) resuelve tu consulta. No olvides valorarla.

Solución perfecta al problema, la macro hace justamente lo que se requería y he aprendido un poco más sobre vba, gracias elsa, recomiendo visitar http://aplicaexcel.galeon.com/macros.htm

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas