Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/06/2007, 03:46
Avatar de 3pies
3pies
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 20 años, 5 meses
Puntos: 144
Re: Buscar palabras de x letras en excel

Prueba con este macro (lo he probado y funciona, pero no ha sido una prueba a fondo, y tampoco he depurado el código, aunque seguramente se podrían reducir líneas):
Código:
Sub buscar()
    'creamos la variable "palabra_a_buscar", que será igual al valor
    'que introduzcamos ebusquedael inputbox
    palabra_a_buscar = Trim(InputBox("Introduce la palabra a buscar", "Buscador"))
    'Asignamos el objeto "buscar", a la variable "busqueda"
    Set busqueda = Cells.Find(What:=palabra_a_buscar)
    'Si no existe esa palabra buscada, mostramos un mensaje
    If busqueda Is Nothing Then
        MsgBox "No he encontrado nada. Lo siento."
    'Si existe esa palabra buscada...
    Else
        'Si la palabra encontrada tiene 4 letras...
        'asignamos el primer resultado a una variable, para que cuando creemos el bucle
        'de búsquedas no entre en un loop infinito de búsquedas, y se pare al volver a
        'encontrar el primer resultado (no sé si ha quedado muy claro...)
        primer_resultado = busqueda.Address
            'Creamos un bucle por si encuentra más de 1 palabra
            Do
                    'redefinimos el objeto búsqueda con los siguientes resultados
                    Set busqueda = Cells.FindNext(busqueda)
                    'seleccionamos la celda donde estamos
                    Range(busqueda.Address).Select
                    'nos fijamos en la celda de que se trate, y quitamos
                    'el valor absoluto que devuelve ($). En realidad, lo que
                    'estamos haciendo, es reemplazar $ por nada
                    celda_encontrada = Replace(busqueda.Address, "$", "")
                    'Si la celda encontrada tiee 4 caracteres...
                    If Len(Range(busqueda.Address)) = 4 Then
                        'creamos un contador
                        contador = contador + 1
                    End If
                    'Si la celda donde estamos corresponde al primer resultado
                    'de la búsqueda, y tiene 4 caracteres, mostramos un mensaje
                    If contador = 1 And Len(Range(busqueda.Address)) = 4 Then
                        MsgBox "En la celda " & celda_encontrada & " tienes la palabra " & UCase(palabra_a_buscar) & "."
                    'y si corresponde a otro resultado (segundo, tercero, etc)
                    'y tiene 4 caracteres, mostramos otro mensaje
                    ElseIf contador <> 1 And Len(Range(busqueda.Address)) = 4 Then
                        MsgBox "...y en la celda " & celda_encontrada & "."
                    End If
            'seguimos buscando mientras encuentre algún resultado, y mientras
    'no volvamos a obtener el primer resultado
            Loop While Not busqueda Is Nothing And busqueda.Address <> primer_resultado
    End If
    'limpiamos el objeto
    Set busqueda = Nothing
End Sub
NOTA: Solo busca aquellas palabras que encuentre y que tengan 4 caracteres.

Salu2