Buscador de Hojas Excel VBA

Solicito de su ayuda para poder realizar un Buscador de Hojas en Excel mediante un Macro, el hecho es que manejo un libro en el cual almaceno proyectos uno por cada hoja (nombro cada hoja con un identificador "fecha" + "numero de proyecto".
Y como es de esperarse en ocasiones necesito hacer una consulta de algún proyecto y en la actualidad los proyectos ya se han acumulado en demasía y hacer un búsqueda ya me resulto complicado, ademas quiero que la búsqueda solo se realice con respecto al proyecto sin que intervenga la fecha, por ejemplo.
la hoja de llama 03/03/091234.
Y quiero que busque 1234 y no todo el texto y que active la hoja 03/03/091234. Y el prbleca es que a veces nombro
03/0912356
por lo que la cadena no mantine una misma longitud pero el proyecto es único
Hasta el momento llevo esto.
Sub Macro1()
    'Declaro Variables
Dim HojaBuscada As String
Dim HojasTotal() As String
Dim i As Integer
ReDim HojasTotal(Sheets.Count) As String
    'Suponemos que estamos buscando el pryecto 1234 y la hoja se llama 03\03\091234
HojaBuscada = "1234"
    'Recorro todas las hojas del libro y registro sus nombres
For i = 1 To Sheets.Count
    HojasTotal(i) = Sheets(i).Name
Next
    'Genero la busqueda
For i = 1 To Sheets.Count
       If StrComp(Mid(HojasTotal(i), WorksheetFunction.Search(HojaBuscada, HojasTotal(i), 1), Len(HojaBuscada)), HojaBuscada, vbTextCompare) = 0 Then
       Sheets(i).Select
       Range("A1").Select
       Exit Sub
       End If
Next
MsgBox ("No se Encontro el Proyecto")
End Sub
El problema es que en la parte "Genero la búsqueda" siempre se para en la primera iteración y me envía a la primera hoja y no encuentro el error, así que si me pudiera orientar acerca de que estoy haciendo mal o alguna sugerencia diferente de como proceder se lo agradecería.

1 respuesta

Respuesta
1
Es mucho + simple que lo que estás realizando.
Te dejo las instrucciones a partir de HojaBuscada. Si no la encuentra no se moverá de la hoja activa, sino selecciona la buscada
HojaBuscada = "1234"
For Each sh In Sheets
    If Right(sh.Name, 4) = HojaBuscada Then
        sh.Select
    End If
Next sh
Si esto resuelve tu problema no olvides finalizar la consulta
Sdos.
Elsa
Te recomiendo este manual:
http://aplicaexcel.galeon.com/manual_VBA.htm
Te recuerdo que la consulta sigue abierta. Si el tema está resuelto, no olvides finalizarla
Sdos
Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas