Asignar funcion FIND

Grabando una macro sobre la función "Encontrar" (FIND), no logro asignar el resultado de la posición de un carácter determinado a una variable. Mirando por ahí, veo que el Depurador de Visual Basic me dice que FIND no es una función.
Esto es lo que me deja la macro :ActiveCell.FormulaR1C1 = "=FIND(""[14]"",RC[-1],1)"
E intento dejarlo en una variable "resul" definida como integer
Pregunto, ¿debo definir una función con 3 parámetros?
Gs.

1 respuesta

Respuesta
1
Prueba utilizando direcciones absolutas de las celdas en lugar de las relativas.
ActiveCell.Formula = "=FIND(""14"",A1)"
No. No hay diferencias. Esta función desde VBA devuelve un verdadero o falso si encuentra el carácter solicitado. A nivel planilla arroja la ubicación del carácter buscado.
Lo que yo necesito hacer es conocer precisamente "esa ubicación" de un carácter determinado que se repite a lo largo del contenido de una celda, asignar su posición a una variable (de ahí el pedito ppal), procesarlo, volver a buscarlo (en caso que exista), volver a procesarlo y así consecutivamente hasta llegar al final del contenido de la celda.
La ubicación me sirve además para ir sumando posiciones de manera tal que posicionx + cierta cantidad de caracteres sea igual a el largo(de la celda) y así saber que he terminado.
Si por ej. escribo Msgbox ActiveCell. Fórmula me muestra "Verdadero" si encuentra el carácter o Falso caso contrario.
Gs
Entiendo que lo que quieres es que una variable de un módulo VB te indique en qué posición se encuentra un texto dentro de una cadena.
Si es eso puedes utilizar la función "instr"
n = instr(
<posición inicial>,<texto completo>,<texto a buscar>)
Si no le pones la posición inicial te devolverá la primera.
No sé si lo que quieres hacer es esto:
    Dim n As Integer
    Dim textoCompleto As String
    Dim letraBuscada As String
    textoCompleto = Cells(1, 1)
    letraBuscada = Cells(1, 2)
    n = InStr(textoCompleto, letraBuscada)
    Do While n > 0
        ' Ejecutar el proceso que quieras
        ' ...
        ' ...
        ' ...
        ' Volvemos a buscar a partir de la siguiente posición
        n = InStr(n + 1, textoCompleto, letraBuscada)
    Loop
Gracias Experto. Funciona perfecto. Había descartado esta función porque ignorantemente descarté pasar a una variable el contenido de la celda. Como FIND trabaja en sus parámetros directamente con una ubicación, me había empecinado con usar esa función.
Un abrazo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas