¿Se puede definir formulas en una celda que aún no se ha creado?

No estoy segura si lo que necesito se puede hacer en Excel y es que necesito asignar a un columna que no están creada una formula, me explico. Yo tengo una macro que me rellena la columna B7 y C7 automáticamente. Las columnas D7:L7 son formulas, necesito que cuando se cree una fila en la columna B7 y C7 automáticamente se le asigne las fórmulas a las columnas D7:L7.

1 respuesta

Respuesta
2

Claro que se puede. Dejá escrita aquí la macro que ya tienes para cuando se cree una fila o comenta cómo haces para crear una fila... con una macro o solamente vas rellenando la fila?

Si fuese esto último, bastaría con que ya las dejes escritas en la fila 7 y a medida que rellenes la hoja, arrastres este rango (D7:L7) hacia abajo (puede ser con una macro)

Mientras te invito a mirar el video N° 15-Formulas con VBA de mi canal. Quizás puedas tomar idea de allí.

Hola, Elsa

Esta es la macro que se genera, 

 Se guardan los datos en la hoja ProjectScheule
With Sheets("ProjectSchedule")
     x = .Range("B" & Rows.Count).End(xlUp).Row + 1
    .Range("B" & x) = [F6]
    .Range("C" & x) = [C5]
End With

Al rellenar solo las columna B y C, las demás se quedan vacías. Como son formulas me gustaría que al generar una fila se genere automáticamente en sus respectivas columnas las fórmulas.

Te agrego el código que falta para agregar las fórmulas.

Fijate que debes contemplar si es la primera vez que se ejecuta este proceso. Es decir, si todavía la hoja está en blanco. En ese caso no se si ya tendrás las fórmulas escritas manualmente en esa fila o si querrás agregarlas al código.

'Se guardan los datos en la hoja ProjectScheule
With Sheets("ProjectSchedule")
     x = .Range("B" & Rows.Count).End(xlUp).Row + 1   'ATENCIÓN 
     If x = 7 Then
     '...... 'si se trata de la primera fila habrá que agregar las fórmulas
     Else
        .Range("B" & x) = [F6]
        .Range("C" & x) = [C5]
        'arrastrar las fórmulas de la línea de arriba
        .Range("D" & x - 1 & ":L" & x - 1).Copy
         .Range("D" & x & ":L" & x).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
    End If
End With

Revisa que no tengas nada hacia abajo en la col B. En la muestra que tengo hay una nota en la fila 31 lo que hará que la variable x no te devuelva correctamente la primera fila libre.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas