Duda: insertar una fila con el formato y las fórmulas de la fila superior

Necesito crear una macro para copiar de una hoja a otra distinta en Excel 2003, de la siguiente manera:

- Copiar las celdas C7, C12 de la hoja "Análisis",

- Pegar solo los valores en la hoja "Estadística", en la fila 8 desde la columna A a la B (en este punto, las columnas C, D tienen fórmulas que las voy a usar en cada nuevo registro que cargue)

- Ahora bien, necesito agregar una fila por arriba de la fila 8, con el formato de esta fila y sin perder las fórmulas de las columnas C, D (para poder trabajar con un nuevo registro).

1 Respuesta

Respuesta
1

Te dejo la macro:

Sub MacroCopiaPegaInserta()
'x Elsamatilde
'se trabaja desde hoja Análisis
'copia C7 y pega en A8 de hoja Registros
    Range("C7").Copy
    Sheets("Registros").Select
    Range("A8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'copia C7 y pega en A8 de hoja Registros
    Sheets("Análisis").Select
    Range("C12").Copy
    Sheets("Registros").Select
    Range("B8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
'estando en hoja Registros inserta una fila x encima de la 8
    Rows("8:8").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'copia formatos y fórmulas de la fila que ahora es 9
    Range("C9:D9").Select
    Selection.AutoFill Destination:=Range("C8:D9"), Type:=xlFillDefault
    'opcional: seleccionar alguna celda
    Range("C8").Select
'opcional: volver a hoja REgistros
End Sub

Verifica el destino de la copia porque según recuerdo en libro enviado, los registros se copiaban en fila 7.

Sdos.

Elsa

Gracias!!!!! Todo esto lo haría estando desde la hoja "Registros", creo que se modificaría la siguiente parte de la macro:

'estando en hoja Registros inserta una fila x encima de la 8
    Rows("8:8").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
'copia formatos y fórmulas de la fila que ahora es 9
    Range("C9:D9").Select
    Selection.AutoFill Destination:=Range("C8:D9"), Type:=xlFillDefault
    '¿Range "c8:D9"? No sería "c8:d8"?
End Sub

Gracias!

Si la fila se inserta x encima de la 8, significa que la 8 es la primera que tiene datos y al insertar una pasa a ser la 9 por eso debes copiar desde La 9 y arrastrar hacia la 8.

Probala o dejame imagen de la hoja "antes" de ejecutar la macro para que vea cual es tu primer fila ocupada.

Sdos!

El código que me pasaste agrega la fila en la hoja "Registros" si es que estoy en ella, ¿es así?

Necesito que toda esta macro se haga desde la hoja "Análisis"... entonces creo que no es válida la siguiente línea:

Rows("8:8").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C9:D9").Select
    Selection.AutoFill Destination:=Range("C8:D8"), Type:=xlFillDefault

porque esta línea me estaría insertando la fila en mi hoja "Análisis", no en la hoja "Registros" que es donde la necesito realmente.

NO Señor, por favor lee nuevamente todo el código completo no parcializado:

Sub MacroCopiaPegaInserta()

'x Elsamatilde

'se trabaja desde hoja Análisis

'copia C7 y pega en A8 de hoja Registros

Range("C7"). Copy

Sheets("Registros").Select      'pasa a hoja REgistros para pegar

    Range("A8").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

'copia C7 y pega en A8 de hoja Registros

'vuelve a hoja Análisis

    Sheets("Análisis").Select

    Range("C12").Copy

    Sheets("Registros").Select     'pasa a hoja Registros para pegar

    Range("B8").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

'estando en hoja Registros inserta una fila x encima de la 8

    Rows("8:8").Select

    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

'copia formatos y fórmulas de la fila que ahora es 9

    Range("C9:D9").Select

    Selection.AutoFill Destination:=Range("C8:D9"), Type:=xlFillDefault

    'opcional: seleccionar alguna celda

    Range("C8").Select

'opcional: volver a hoja REgistros

End Sub

La última línea diría:

'opcional: volver a hoja Analisis, en ese caso agregá:

Sheets("Analisis").select

End Sub

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas