Eliminar un apóstrofe al inicio de la fórmula VBA

geo0258 Mensajes publicados 24 Estado Miembro -  
eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   -
Hola, aquí está mi problema

En la celda Y4 tengo una fórmula =BUSCARH(X3;'Picklists Project'!1:4;4;FALSO)
Esta me regresará una cadena de texto que representa otra fórmula: aquí da:
'=si('1 - Project table'!B4="";"";SI(ESERROR(DATEVAL(TEXTO($X4;"jj/mm/aa")));"wrong";""))
Dependiendo de lo que elija como valor en X3 tendré diferentes fórmulas que aparecerán en Y4.

Luego selecciono mi celda Y4, copio y pego como valor en otra celda
Así que me encuentro con la fórmula anterior que tiene un apóstrofo al principio. Si lo elimino manualmente y presiono enter, mi fórmula ya no es una cadena de texto, se activa y funciona. Busco reproducir esta acción en VBA y no puedo. El objetivo es que, sin importar la fórmula que aparezca en Y4, pueda copiarla a otro lugar, asegurarme de que no se considere una cadena de texto y luego extenderla.

Aclaro que ya he logrado eliminar el apóstrofo con la función MID, pero la fórmula no se activa por sí sola.

Espero haber sido lo suficientemente claro en mi explicación.

Gracias de antemano por sus respuestas.

2 respuestas

  1. Mike-31 Mensajes publicados 18205 Fecha de registro   Estado Colaborador Última intervención   5 147
     
    Hola,

    tienes un error en la redacción de tu fórmula siempre que tu hoja se llame Project table
    y no 1 - Project table,
    reemplaza '1 - Project table'!B4 por 1 - 'Project table'!B4
    lo que te dará
    =SI(1 -'Project table'!B4="";"";SI(ESERROR(FECHA.VAL(TEXTO($X4;"dd/mm/aa")));"incorrecto";""))

    Saludos
    Mike-31

    Soy responsable de lo que digo, no de lo que entiendes...
    0
    1. geo0258 Mensajes publicados 24 Estado Miembro
       
      Hola Mike, gracias por tu respuesta. Sin embargo, mi tabla se llama bien 1 - Project table

      Así que tu solución no funciona

      Para que lo sepas, mi buscarV en la celda Y4 apuntará en la tabla Picklists Projects a esto: ="=si('1 - Project table'!B4="""";"""";SI(ESTERREUR(DATEVAL(TEXTE("&ADRESSE(4;EQUIV("Start_date";'1 - Project table'!3:3;0);3;1)&";""jj/mm/aa"")));"&""""&"wrong"&""""&";""""))"

      Así que el resultado de mi buscarV muestra esto: =si('1 - Project table'!B4="";"";SI(ESTERREUR(DATEVAL(TEXTE($X4;"jj/mm/aa")));"wrong";""))

      Y luego (una pequeña corrección respecto a lo que escribí antes), cuando copio y pego el resultado de mi buscarV como valor, me añade una comilla delantera a mi fórmula, así: '=si('1 - Project table'!B4="";"";SI(ESTERREUR(DATEVAL(TEXTE($X4;"jj/mm/aa")));"wrong";""))

      Y luego lo elimino manualmente, pulso enter y la fórmula funciona. Y de hecho, también voy a hacer una corrección sobre lo que dije antes. La comilla no aparece cuando simplemente miramos la celda, aparece cuando hacemos clic en la celda. Y entonces cuando utilizo la función mid para eliminarla, es mi = lo que se elimina primero. Pero la comilla sigue ahí cuando hago clic en la celda. Así que tengo más la impresión de que es una cuestión de formato, como si mi fórmula estuviera en formato texto o algo así.
      0
  2. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
     
    Hola,

    ' fuerza el formato texto.
    Se puede hacer en VBA, pero si es solo para que la fórmula sea legible, simplemente pon un espacio delante.
    Luego, un reemplazar " =" por "=" en el rango activará las fórmulas.
    eric

    Edit : hay que hacerlo en tu rango de la búsqueda(). donde supongo que está presente.

    Al intentar continuamente, se acaba logrando.
    Por lo tanto, cuanto más falla, más posibilidades tenemos de que funcione. (los Shadoks)
    Además de dar las gracias (¡sí, sí, eso se hace!), pensar en marcar como resuelto. Gracias
    0
    1. geo0258 Mensajes publicados 24 Estado Miembro
       
      Hola eriiic,

      Gracias por tu respuesta, desafortunadamente tu solución no funciona.
      He conseguido hacer que la apóstrofe no aparezca. Simplemente probé con otras columnas que no sean la columna Y y no tenía apóstrofe. Así que no sé por qué la columna Y forzaba el resultado a ser un campo de texto.

      Sin embargo, incluso sin eso, mi fórmula aún no se activa. Si intento tu solución, eriiic, funciona, pero sin usar VBA. Y lo que quiero es que mis usuarios no tengan que hacer ninguna manipulación, solo presionar un botón. He grabado la macro que corresponde a reemplazar " =&" por "=" pero aún no funciona.

      He intentado con FormulaR1C1 para activar la fórmula, pero no consigo hacerlo. Tal vez esté usando mal la función, es la primera vez que la utilizo. ¿Alguien sabe si hay alguna pista que explorar al respecto y la sintaxis que debería usar? ¿O quizás otra pista?
      0
    2. geo0258 Mensajes publicados 24 Estado Miembro
       
      Ok, he encontrado la solución buscando en la red
      Hay que simular el hecho de entrar en la celda y luego pulsar enter

      Así que queda así:
      Range("Y4").Select
      SendKeys "{F2}"
      SendKeys "{ENTER}"

      Gracias a ustedes
      0
    3. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      oulalaaa... Sendkeys tiene la molesta costumbre de desactivar el teclado numérico.
      With Range("G2:G10") .Formula = .Formula End With

      eric
      0