Hola, el problema es el siguiente, tengo varias hojas en un libro y necesito que excel me busque un dato que yo introduzca en todas las hojas del libro y lo marque bien sea cambiándole el color de fondo o escribiendo un "Si" en la siguiente columna libre, podrías ayudarme con esto Muchas gracias Andres
1 Respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
La siguiente macro ejecuta lo que solicitas. No me quedó claro si encontrará coincidencias en más de una hoja, o si cuando encuentra la primera no necesita seguir buscando... De todos modos, activa el Editor de Visual Basic (Alt+F11), inserta un módulo nuevo y pega el siguiente código: Sub BuscaCelda() Dim Buscar As String Dim Nosta As Boolean Sheets("Hoja1").Select Buscar = Range("E3").Value Nosta = True If Buscar <> "" Then For Each Hoja In ActiveWorkbook.Sheets Hoja.Select Hoja.Range("A1:A2000").Select Selection.Interior.ColorIndex = xlNone Set C = Selection.Find(Buscar) If Not C Is Nothing Then C.Select C.Interior.ColorIndex = 4 End If ActiveCell.Select Nosta = False Next 'Notifica que no encontro nada If Nosta Then MsgBox "Valor no encontrado" 'Liberamos la memoria Set C = Nothing Else 'Notifica que no se proporcionó dato a buscar MsgBox "No hay nada que buscar" End End If Sheets("Hoja1").Select Range("E3").Select End Sub A modo de ejemplo, asumí que el dato a buscar está en la celda E3 de la Hoja1 y que deberá buscar en el rango A1:A2000, pero obviamente puedes cambiar estas referencias. La macro pinta de Verde cada celda donde encontró coincidencia o muestra un mensaje avisando si no encontró lo que buscaba. aclarando qué entendí mal o qué faltó.
Revisando mi respuesta encontré un comando fuera de lugar. Usa este código que es similar al anterior: Sub BuscaCelda() Dim Buscar As String Dim Nosta As Boolean Sheets("Hoja1").Select Buscar = Range("E3").Value Nosta = True If Buscar <> "" Then For Each Hoja In ActiveWorkbook.Sheets Hoja.Select Hoja.Range("A1:A2000").Select Selection.Interior.ColorIndex = xlNone Set C = Selection.Find(Buscar) If Not C Is Nothing Then C.Select C.Interior.ColorIndex = 4 Nosta = False End If ActiveCell.Select Next 'Notifica que no encontro nada If Nosta Then MsgBox "Valor no encontrado" 'Liberamos la memoria Set C = Nothing Else 'Notifica que no se proporcionó dato a buscar MsgBox "No hay nada que buscar" End End If Sheets("Hoja1").Select Range("E3").Select End Sub Éxitos! Fernando
Fernando gracias por tu respuesta, el nuevo problema es que al hacerlo por segunda vez, borra el color de la primera búsqueda
Esta versión mantiene el color de la primera búsqueda (Asumí que cada búsqueda era independiente) Sub BuscaCelda() Dim Buscar As String Dim Nosta As Boolean Sheets("Hoja1").Select Buscar = Range("E3").Value Nosta = True If Buscar <> "" Then For Each Hoja In ActiveWorkbook.Sheets Hoja.Select Hoja.Range("A1:A2000").Select Set C = Selection.Find(Buscar) If Not C Is Nothing Then C.Select C.Interior.ColorIndex = 4 Nosta = False End If ActiveCell.Select Next 'Notifica que no encontro nada If Nosta Then MsgBox "Valor no encontrado" 'Liberamos la memoria Set C = Nothing Else 'Notifica que no se proporcionó dato a buscar MsgBox "No hay nada que buscar" End End If Sheets("Hoja1").Select Range("E3").Select End Sub