Macro VBA [Excel]

Hola, necesito de su ayuda:
Quiero que se ejecute esta macro automáticamente, es decir que mientras este trabajando en la hoja 1 automáticamente este copiando en la hoja 2... Porque los cambios solo surten efecto cuando abro el visual y pongo ejecutar, o cuando cierro el documento y al volverlo abrir pongo ejecutar macros.
Private Sub Workbook_Open()
'
' Macro2 Macro
' Macro grabada el 08/10/2009 por UFenix
'
' Acceso directo: CTRL+q
'
    Rows("9:15").Select
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("9:9").Select
    ActiveSheet.Paste
    Sheets("Pets Base").Select
    Range("I1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Range("H6:I6").Select
    ActiveSheet.Paste
    Range("K18").Select
    Sheets("Pets Base").Select
    Range("H7:I7").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Range("H7:I7").Select
    ActiveSheet.Paste
    Sheets("Pets Base").Select
    Rows("18:18").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("18:18").Select
    ActiveSheet.Paste
    Sheets("Pets Base").Select
    Rows("19:19").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("20:20").Select
    ActiveSheet.Paste
    Sheets("Pets Base").Select
    Rows("20:20").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("22:22").Select
    ActiveSheet.Paste
    Sheets("Pets Base").Select
    Rows("21:21").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("24:24").Select
    ActiveSheet.Paste
    Sheets("Pets Base").Select
    Rows("22:22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("26:26").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=3
    Sheets("Pets Base").Select
    Rows("23:23").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("B26:D26").Select
    Sheets("Pets Vivo").Select
    Rows("28:28").Select
    ActiveSheet.Paste
    Sheets("Pets Base").Select
    Rows("24:24").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("30:30").Select
    ActiveSheet.Paste
    Sheets("Pets Base").Select
    Rows("25:25").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("32:32").Select
    ActiveSheet.Paste
End Sub
Gracias de Antemano

1 Respuesta

Respuesta
1
Este pequeño código copiará todo lo que escribas en la Hoja "Pets Base" a la Hoja "Pets Vivo"
Dim Celda
Private Sub Worksheet_Activate()
    Celda = ActiveCell.Address
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("Pets Vivo").Range(Celda) = Range(Celda)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Celda = ActiveCell.Address
End Sub
Gracias por tu respuesta, no la vi antes porque pensé que enviaban notificaciones al e-mail en caso tu pregunta haya sido contestada.
Bueno tengo una duda: copie el código en el Thisworkbook.
Private Sub Workbook_Open()
'
' Macro2 Macro
' Macro grabada el 08/10/2009 por UFenix
'
' Acceso directo: CTRL+q
'
    Rows("9:15").Select
    Selection.Copy
    Sheets("Pets Vivo").Select
    Rows("9:9").Select
etc... etc...
End Sub
Dim Celda
Private Sub Worksheet_Activate()
    Celda = ActiveCell.Address
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("Pets Vivo").Range(Celda) = Range(Celda)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Celda = ActiveCell.Address
End Sub
Pero sigue sin copiar de una hoja a otra automáticamente.
Cuando pongo Ejecutar sub/userform me sale una ventanita para ponerle nombre a la macro... debo colocar un nombre.
Agradecería que me dijeran que estoy haciendo mal...
Muchas gracias,
Luciana
Parece que olvidé indicarte que este código lo copies en códigos de Hoja1(Pets Base), NO en Thisworkbook.
Dim Celda
Private Sub Worksheet_Activate()
    Celda = ActiveCell.Address
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("Pets Vivo").Range(Celda) = Range(Celda)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Celda = ActiveCell.Address
End Sub
Recuerda tener una Hoja llamada "Pets Base" y otra llamada "Pets Vivo"
Hay un problema, la hoja 2 (Pets Vivo) no es totalmente idéntica a la hoja 1 (Pets Base)... es decir los cambios automáticos surten efecto siempre y cuando la celda de la hoja 2 coincida con la celda de la hoja 1.
Ejemplo: la celda 20 de la hoja 1 (Prender el extractor de polvos del equipo antes de iniciar la operación.) Coincide con la celda 20 de la hoja 2. Pero la celda consiguiente de la hoja 2 es una celda de observaciones. Que al final complica la secuencia porque ahora la celda 21 de la hoja 1 automáticamente debería copiarse en la celda 22 de la hoja 2 (esta claro que es debido a que la celda de observaciones te hace saltarte una celda más)... y así etc. etc.
Otro comentario es que solo copia el contenido y no la forma... porque para que copie el alto de la fila y el color de relleno de la celda, etc (formatos) tengo que cerrar el documento y volverlo a abrir poniendo habilitar macros para que todo se copie auomáticamente como debe ser.
¿Crees qué haya alguna solución?
La necesito por favor!
Porque simplemente no creas una fórmula en la celda 22 de la hoja "Pets Vivo" así :
='Pets Base'!A21
Y le das el formato idéntico al de la celda A21 de la hoja Pets Base.
Y así con cada celda que quieres jalar automáticamente de "Pets Base" a "Pets Vivo"
Esa fórmula ya se ha estado utilizando (='Pets Base'!A21) el problema es que no te copia los formatos.
Yo necesito que me copien los formatos, porque hay casos en que el texto es grande y tienes que ajustar el alto de las filas... en la primera hoja y por lo tanto en la segunda hoja tbm... Por eso quería encontrar la manera de que se haga automáticamente ya que la hoja 2 es la hoja que tiene permisos de impresión.
Es cierto le puedo dar el formato idéntico manualmente, pero no solo son 2 o 3 celdas a configurar.
Son más de 600 formularios de PETS, cada uno con diferentes número de pasos.
La idea era encontrar una manera de hacer las cosas más prácticas para el trabajador para que puedan trabajar con un documento eficiente y no con un documento que les complique la labor... (no sé si logras entenderme).
Bueno creo que no se puede.
De todas maneras gracias.
Es complicado lo que pides. La mejor alternativa que puedo ofrecerte es que coloques tu macro en la hoja de código de "Pets Vivo" así:
Private Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    Sheets("Pets Base"). Range("A9:C15"). Copy
    Range("A9"). PasteSpecial
    Sheets("Pets Base"). Range("I1"). Copy
    Range("H6:I6"). PasteSpecial
    Range("K18").Select
    Sheets("Pets Base"). Range("H7:I7"). Copy
    Range("H7:I7"). PasteSpecial
    Sheets("Pets Base"). Range("A18:D8"). Copy
    Rows("18:18"). PasteSpecial
    Sheets("Pets Base"). Range("A19:D19"). Copy
    Range("A20"). PasteSpecial
    Sheets("Pets Base"). Range("A20:D20"). Copy
    Range("A22:D22"). PasteSpecial
    Sheets("Pets Base"). Range("A21:D21"). Copy
    Range("A24"). PasteSpecial
    Sheets("Pets Base"). Range("A22:D22"). Copy
    Range("A26"). PasteSpecial
    Sheets("Pets Base"). Range("A23:D23"). Copy
    Range("A28"). PasteSpecial
    Sheets("Pets Base"). Range("B26:D26"). Copy
    Range("A30"). PasteSpecial
    Sheets("Pets Base"). Range("A25:D25"). Copy
    Range("A32"). PasteSpecial
    Application.CutCopyMode = False
End Sub
De esta manera, cada vez entres a la Hoja Pets Viva se copiarán las celdas que deseas de "Pets Base" a "Pets Viva", como si lo hubiera hecho automáticamente.
Si, es una gran ayuda.
Por otro lado yo encontré tbm una solución.
Estoy utilizando un botón en el mismo excel.
Al terminar de llenar mi formulario de PETS Base, le hago click y automáticamente me copia todo lo que necesito (datos y formato) al PETS Vivo.
Saludos!
Mil Gracias por tu ayuda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas