Macro búsqueda en todo el libro, varias hojas

Quisiera de favor que me ayudaran, necesito una macro que al hacer click en commandbutton1 que se encuentra en la hoja1, haga una búsqueda del valor de un textbox1 que también está en hoja1, que haga la búsqueda en todo el libro es decir hoja por hoja y si no encuenta el valor buscado que no me mande a depurar/finalizar.
Respuesta
1
Hace unos días dejé una rutina muy similar que encontrarás en este enlace:
http://www.todoexpertos.com/mitodoexpertos/expert/questions/view/1832372/por-favor-una-gran-duda
Las diferencias con tu pedido:
1- Colocá la rutina en un módulo y en el evento clic de tu commandbutton colocá:
call VariasHojas
2- En mi rutina la variable 'buscar' se obtenía de un InputBox, en tu caso será:
buscar = textbox1.value
3- Quitále la línea que restringe la búsqueda en la hoja4 (If hoja. name <> 4.... ) y también quitá el End If que está por encima de la línea: next hoja
Ajústala y pruébala . Si te queda algo sin resolver escribime nuevamente.
Saludos
Elsa
PD) Todo sobre VBA en:
http://es.geocities.com/lacibelesdepunilla/manual_VBA
http://galeon.com/aplicaexcel
Gracias por tu respuesta pero el enlace me dice que no tengo permiso para acceder a un mensaje privado
Qué raro, no se vé como privada... bueno, aquí te la dejo. Lo que hace es un resumen de los registros encontrado, ajustá esto a tus necesidades.
Sub VariasHojas()
Dim buscar
Dim texto As String, titulo As String
texto = "Digite el codigo de producto que desea buscar"
titulo = "Busqueda en todas las hojas del libro"
buscar = InputBox(texto, titulo)
If buscar = "" Then Exit Sub
Dim fila As Integer
fila = 3
Worksheets("Hoja4").Select
Range("E7:AA20").Select
Selection.ClearContents
ActiveCell.Value = " Resultados para la búsqueda de " & buscar
For Each hoja In Sheets
If hoja.Name <> "Hoja4" Then
With hoja.Range("A2:AA65500")
Set esta = .Find(buscar, LookIn:=xlValues)
If Not esta Is Nothing Then
primeracelda = esta.Address
'opcional: mostrar el nbre de la hoja según consulta original.
MsgBox hoja.Name
Do
ActiveCell.Offset(fila, -1).Value = esta.Offset(0, -1).Value
ActiveCell.Offset(fila, 0).Value = esta.Offset(0, 0).Value
ActiveCell.Offset(fila, 1).Value = esta.Offset(0, 1).Value
fila = fila + 1
Set esta = .FindNext(esta)
Loop While Not esta Is Nothing And esta.Address <> primeracelda
End If
End With
End If
Next hoja
End Sub
Gracias, modifiqué un poco de código y funciona casi perfecto, lo que hace es lo siguiente:
Busca el valor ingresado en el inputbox, el msgbox muestra la hoja donde se encuentra, y me lleva a esa hoja.
El problema es que no selecciona la celda que contiene el valor buscado, espero puedas ayudarme!
Muchas gracias!
sorry, te envío el código que cambié
Gracias
Sub Macro1()
Dim buscar
Dim texto As String, titulo As String
texto = "Digite el codigo de producto que desea buscar"
titulo = "Busqueda en todas las hojas del libro"
buscar = InputBox(texto, titulo)
If buscar = "" Then Exit Sub
For Each hoja In Sheets
If hoja.Name <> "Hoja1" Then
With hoja.Range("A2:AA65500")
Set esta = .Find(buscar)
If Not esta Is Nothing Then
primeracelda = esta.Address
'opcional: mostrar el nbre de la hoja según consulta original.
MsgBox hoja.Name
hoja.Activate
End If
End With
End If
Next hoja
End Sub
Debajo de la línea que te activa la hoja encontrada, agregá estas otras para posicionarte en la celda encontrada y finalizar el proceso.
Hoja. Activate 'ya la tenés
esta.Select
Exit Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas