Macro para buscar en varias hojas

Estoy tratando de hacer una macro en excel que busque un dato en varias hojas, ya tengo un código y me funciona algunas veces, pero otras extrañamente se cicla y no me deja hacer nada mas o bien no encuentra la palabra que le pido aunque si esté en el archivo, ¿podrías ayudarme? Ya he intentado varias maneras y nada me dá resultado, estoy un poco desesperada! Te anexo el código.
De antemano muchas gracias.
Private Sub TextBox4_Change()
Dim n As Range
palabra_a_buscar = ComboBox4.Text
Sheets(Array("Sheet2", "CEVA", "FEDEX", "PANALPINA")).Select
'Sheets("Sheet2").Activate
For Each x In ActiveWindow.SelectedSheets
x.Select
Set n = ActiveSheet.Cells.Find(palabra_a_buscar)
If n Is Nothing Then
'MsgBox ("No he encontrado nada. Lo siento")
Else
Range(n.Address).Select
ActiveCell.Offset(0, 1).Select
TextBox4.Text = ActiveCell
'MsgBox ("Aquí tienes la palabra " & UCase(palabra_a_buscar) & ".")
End If
NextSheet:
Next x
End Sub
Respuesta
1
Utiliza esta función que me encontré:
Function BuscarEnHojas(Look_Value As Variant, Tble_Array As Range, _
Col_num As Integer, Optional Range_look As Boolean)
''''''''''''''''''''''''''''''''''''''''''''''''
'Written by OzGrid.com
'''''''''''''''''''''''''''''''''''''''''''''''''
Dim wSheet As Worksheet
Dim vFound
On Error Resume Next
For Each wSheet In ActiveWorkbook.Worksheets
With wSheet
Set Tble_Array = .Range(Tble_Array.Address)
vFound = WorksheetFunction.VLookup _
(Look_Value, Tble_Array, _
Col_num, Range_look)
End With
If Not IsEmpty(vFound) Then Exit For
Next wSheet
Set Tble_Array = Nothing
VLOOKAllSheets = vFound
End Function
Ya la probé y funciona de maravilla. Pones por ejemplo:
=BuscarEnHojas(A1,A:D,4,0)
El valor lo pones en A1, A:D es el rango, 4 es la columna. Es parecida a BuscarV

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas