Quiero conseguir que un marco me sirva para varias hojas y que varios marcos se activen con un botón

Tengo que realizar un fómulario de entrada y quiero que determinadas celdas aparezcan en distintas hojas, para ello he creado un macro con las celdas que quiero repetir en cada hoja y otros macros para las otras celdas, repartirlas como yo quiero. Si las pruebo por separado funcionan. El problema viene cuando junto los macros en un botón, solo realiza la orden en la primera hoja. Dejo el Macro de las celdas que quiero copiar ( son las mismas pero en diferentes hojas) para ver si podéis ayudarme

Sub Macro1()
'
' Macro1 Macro
'
Application.ScreenUpdating = False
'
Range("B3:H3").Select
Selection.Copy
Sheets("Información general").Select
Range("A2").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Sheets("Formulario").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Sub Macro2()
'
' Macro2 Macro
'
Application.ScreenUpdating = False
'


Range("B3:E3").Select
Selection.Copy
Sheets("Diagrama de niveles").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Sheets("Formulario").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Sub Macro3()
'
' Macro3 Macro
'
Application.ScreenUpdating = False
'
Range("B3:E3").Select
Selection.Copy
Sheets("Proveedor").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Sheets("Formulario").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub

Sub Macro4()
'
' Macro4 Macro
'
Application.ScreenUpdating = False
'


Range("B3:E3").Select
Selection.Copy
Sheets("Validez").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Sheets("Formulario").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub
Sub Macro5()
'
' Macro5 Macro
'
Application.ScreenUpdating = False
'


Range("B3:E3").Select
Selection.Copy
Sheets("Histórico de calibración").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Sheets("Formulario").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub

Sub Macro6()
'
' Macro6 Macro
'
Application.ScreenUpdating = False
'


Range("B3:E3").Select
Selection.Copy
Sheets("Localización").Select
Selection.Insert Shift:=xlDown
Range("A2").Select
Sheets("Formulario").Select
Application.CutCopyMode = False
Selection.ClearContents
End Sub

Sub INGRESAR()
'
' INGRESAR Macro
'
Application.ScreenUpdating = False
'


Call Macro1
Call Macro2
Call Macro3
Call Macro4
Call Macro5
Call Macro6
End Sub

1 respuesta

Respuesta
2

Me puedes explicar qué quieres copiar.

Por ejemplo, en la macro1

Sub Macro1()
'
' Macro1 Macro
'
    Application.ScreenUpdating = False
    '
    Range("B3:H3").Select
    Selection.Copy
    Sheets("Información general").Select
    Range("A2").Select
    Selection.Insert Shift:=xlDown
    Range("A2").Select
    Sheets("Formulario").Select
    Application.CutCopyMode = False
    Selection.ClearContents
End Sub

Estás seleccionando las celdas "B3:H3", pero no pusiste de cuál hoja.

Lo que vas a copiar es de la hoja "Formulario"???

Entonces puedes ponerlo así:

Sub Macro1()
'Mod.Por.Dante Amor
    Application.ScreenUpdating = False
    Sheets("Formulario").Range("B3:H3").Copy
    Sheets("Información general").Range("A2").Insert Shift:=xlDown
    Application.CutCopyMode = False
End Sub

Si es correcto lo que te dije, así quedarían tus macros:

Sub Macro1()
'Mod.Por.Dante Amor
    Sheets("Formulario").Range("B3:H3").Copy
    Sheets("Información general").Range("A2").Insert Shift:=xlDown
End Sub
Sub Macro2()
    Sheets("Formulario").Range("B3:E3").Copy
    Sheets("Diagrama de niveles").Range("A2").Insert Shift:=xlDown
End Sub
Sub Macro3()
    Sheets("Formulario").Range("B3:E3").Copy
    Sheets("Proveedor").Range("A2").Insert Shift:=xlDown
End Sub
Sub Macro4()
    Sheets("Formulario").Range("B3:E3").Copy
    Sheets("Validez").Range("A2").Insert Shift:=xlDown
End Sub
Sub Macro5()
    Sheets("Formulario").Range("B3:E3").Copy
    Sheets("Histórico de calibración").Range("A2").Insert Shift:=xlDown
End Sub
Sub Macro6()
    Sheets("Formulario").Range("B3:E3").Copy
    Sheets("Localización").Range("A2").Insert Shift:=xlDown
End Sub
Sub INGRESAR()
'
    Application.ScreenUpdating = False
    Call Macro1
    Call Macro2
    Call Macro3
    Call Macro4
    Call Macro5
    Call Macro6
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas