Como modificar mi macro para regresar a la hoja activa

Tengo un libro con mas de 100 hojas, y necesito ejecutar una macro para que me restaure ciertas hojas. Cada hoja tiene un nombre, y hay una con el nombre de "Machote" que la utilizo para restaurar las hojas.

La macro es:

Sub Restaurar()
'
' Restaurar Macro
' Restaura los valores de la hoja
'
' Acceso directo: CTRL+r
'
Sheets("Machote").Select
Selection.Copy
Sheets("Leo Zuñiga").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("B7").Select
End Sub

La macro la ejecuto de la hoja "Leo Zúñiga", pero este nombre puede cambiar ya que puede ser Carlos, Juan, Pedro, ect. Y aquí es donde no se como hacer que la macro se ejecute y regrese a la hoja independientemente del nombre que la voy a ejectutar.

2 respuestas

Respuesta
3

No es necesario que cambies de hoja, puedes poner lo siguiente y copia de la hoja "machote" a la hoja "destino"

Sub Restaurar()
    ' Restaurar Macro' Restaura los valores de la hoja
    ' Acceso directo: CTRL+r
    Sheets("Machote").Range("B7").Copy Sheets("Leo Zuñiga").Range("B7")
End Sub

Solamente cambia "B7" por la celda o el rango de celdas que quieras copiar. También tienes que poner la celda destino, cambia "B7" por la celda destino.


Avísame si necesitas restaurar varias hojas o todas las hojas con la misma macro para hacer ls ajustes.

[Sal u dos

Gracias Dante... Es correcto, quiero utilizar la Macro con las diferentes hojas que tengo, tener que crear una macro para cada hoja.

Macro para restaurar todas las hojas, por ejemplo:

Sub Restaurar()
    ' Acceso directo: CTRL+r
    For Each h In Sheets
        Select Case LCase(h.Name)
            'escribe aquí el nombre en minúsculas de las hojas que no se restauran
            Case "machote", "hoja1"
            Case Else: Sheets("Machote").Range("B7").Copy h.Range("B7")
        End Select
    Next
End Sub

Cambia "B7" por la celda o rango de celdas a restaurar.


'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

¡Gracias! Mr. James Bond. Realice el cambio y es justo lo que necesitaba. Gracias por compartir la genialidad que hay en ti.

Atentamente, Roberto Castro.

'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda
Respuesta
2

En la primera línea del código que pusiste tienes la solución a tu pregunta solo tienes que repetirla al final de la macro y listo regresas a la hoja de donde partiste

James, de esa forma me llevaría de vuelta a la hoja "Machote". Machote, sería la hoja de donde copio las datos para pegarlos en la hoja donde me encuentre que puede ser "Juan", yo quiero que al ejecutarla en Juan, valla a Machote copie y regrese a juan... y claro Juan puede cambiar ya que después puede ser Pedro.

Gracias,

Bueno entiendo hay dos formas de hacerlo una la más simple te copia toda la hoja a machote a la hoja que quieras sin salirte de la hoja es decir si esta en juan la instrucción se ira a machote y te copiara la info sin cambiar de hoja, ojo te crea una copia exactamente igual a machote.

La segunda macro hace lo mismo solo que te va a preguntar a que hoja quieres hacer la copia, esto te permite correr una sola vez la macro, te sales dando enter en la hoja en blanco o contestando no en la pregunta que te va a hacer.

Y la tercera selecciona es igual a la 2a solo que copia la información que selecciones en machote

Sub restaurar_hoja()
Sheets("machote").Cells.Copy: Range("a1").PasteSpecial
End Sub
'
'
Sub restaurar_hoja2()
DENUEVO:
hoja = Application.InputBox("que hoja quieres restaurar?")
vacio = hoja = vbNullString
If vacio Then End
On Error Resume Next
buscahoja = (Worksheets(hoja).Name <> "")
EXISTE = buscahoja = Empty
If EXISTE Then
    MsgBox ("LA HOJA " & hoja & " A RESTAURAR NO EXISTE?"), vbCritical, "AVISO EXCEL": GoTo DENUEVO
Else
    Sheets(hoja).Select
    Sheets("machote").Cells.Copy: Sheets(hoja).Range("a1").PasteSpecial
    N = MsgBox("QUIERES RESTAURAR OTRA HOJA?", vbYesNo, "AVISO EXCEL")
    XYES = N = 6
    If XYES Then
        GoTo DENUEVO:
    Else
        End
    End If
End If
On Error GoTo 0
End Sub
'
'
Sub restaurar3()
DENUEVO:
hoja = Application.InputBox("que hoja quieres restaurar?")
vacio = hoja = vbNullString
If vacio Then End
On Error Resume Next
buscahoja = (Worksheets(hoja).Name <> "")
EXISTE = buscahoja = Empty
If EXISTE Then
    MsgBox ("LA HOJA " & hoja & " A RESTAURAR NO EXISTE?"), vbCritical, "AVISO EXCEL": GoTo DENUEVO
Else
    Sheets("machote").Select
    Selection.Copy
    Sheets("hoja").Select
    Sheets(hoja).Range("b7").PasteSpecial
N = MsgBox("QUIERES RESTAURAR OTRA HOJA?", vbYesNo, "AVISO EXCEL")
    XYES = N = 6
    If XYES Then
        GoTo DENUEVO:
    End If
        End
End If
End Sub

¡Gracias! mi estimado, voy a ejecutarlas.

Buen día James,

Ejecute las macros y están muy buenas. De echo puedo darles uso. La que mas utilizaría seria la numero tres. Ahora James, consulta esta ultima macro al ejecutarla me restaura la hoja, pero me deja en la hoja Machote... Se podrá modificar para que quede al finalizar desde la hoja que se ejecute. Muchas Gracias y disculpas por las molestias.

En la macro tres las líneas después del else quítalas y pon estas y listo la hoja volverá al lugar desde donde se ejecuto

 Sheets("machote").Select
    Selection.Copy: Sheets(hoja).Range("b7").PasteSpecial
    Sheets(hoja).Select
n=......

¡Gracias! Mr. James Bond. Realice el cambio y es justo lo que necesitaba. Gracias por compartir la genialidad que hay en ti.

Atentamente, Roberto Castro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas