Macro, designar la hoja activa.

Resuelto
Dobynette -  
 Dobynette -
Hola a todos

He estado buscando durante varios días cómo adaptar una macro para mi archivo, pero no encuentro la solución.
He creado un archivo de planificación con varias pestañas para cada mes y, además, pestañas que resumen la presencia de cada persona en cada puesto para permitir un seguimiento.
En cada pestaña de mes, tengo una tabla con el número de días de presencia en cada puesto por persona y un botón con una macro que me permite agregar esas columnas en la tabla resumen por puesto.

Lo que busco hacer es tener una única macro, sin importar qué pestaña de mes se esté utilizando al lanzarla. Pero actualmente no he encontrado nada que funcione para reemplazar los "Sheets("Enero").Select" en mi macro.

¿Alguien tendría una solución para designar la hoja desde la cual se hizo clic en el botón para lanzar la macro?

Gracias de antemano :)

2 respuestas

  1. Vaucluse Mensajes publicados 27336 Fecha de registro   Estado Colaborador Última intervención   6 453
     
    Hola
    quizás simplemente (y con todas las reservas según tu macro), reemplazar:

    Hojas("Enero").select

    por

    ActiveSheet.select

    saludos

    --
    La calidad de la respuesta depende sobre todo de la claridad de la pregunta, ¡gracias!
    0
    1. Dobynette
       
      Hola

      Gracias por tu respuesta
      He intentado este comando, pero la macro no hacía absolutamente nada.

      Aquí está la macro. Quizás falta algo.

      Sub Seguimiento()
      '
      ' Macro Seguimiento
      '


      Sheets("URG").Select
      Columns("D").Select
      Range("D2").Activate
      Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
      ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
      Sheets("Enero").Select
      Range("B50:B67").Select
      Selection.Copy
      Sheets("URG").Select
      Range("D1").Select
      Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
      , SkipBlanks:=False, Transpose:=False
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Columns("D:D").ColumnWidth = 5
      End Sub


      Este código se repite idénticamente para 4 copiar/pegar en diferentes pestañas.
      0
    2. Vaucluse Mensajes publicados 27336 Fecha de registro   Estado Colaborador Última intervención   6 453
       
      No vuelo muy alto en macro, pero creo que si comienzas por seleccionar la hoja URG, ActiveSheet.Select se dirigirá necesariamente a esa hoja!

      ve si puedes comenzar tu macro con:

      ActiveSheet.Select
      Range("B50:B67").Select
      Selection.Copy

      luego selecciona la hoja URG y elimina más abajo las filas que se refieren a la copia de enero?

      me parece que las acciones que haces antes de copiar enero se pueden hacer después, ¿no?

      si no, tendrás que esperar a alguien mejor en VBA y eso, seguramente no es raro aquí :-))

      saludos
      0
    3. Dobynette
       
      ¡Re!

      Había montado la macro así porque no podía insertar las celdas manteniendo el formato de una vez, pero ya lo logré y funciona bien. Sin embargo, me falta una línea que permita regresar a la hoja inicial después del primer copiar/pegar, siempre sin designarla por su nombre. Intentaré encontrar esta nueva solución :) ¡Gracias!

      Sub Suivi2()
      '
      ' Macro Suivi2
      '

      '
      ActiveSheet.Select
      Range("B50:B66").Select
      Selection.Copy
      Sheets("URG").Select
      Columns("D").Select
      Range("D2").Activate
      Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
      Range("D1").Select
      Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
      , SkipBlanks:=False, Transpose:=False
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False

      ActiveSheet.Select
      Range("C50:C66").Select
      Selection.Copy
      Sheets("LCT").Select
      Columns("D").Select
      Range("D2").Activate
      Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
      Range("D1").Select
      Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
      , SkipBlanks:=False, Transpose:=False
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      End Sub
      0
    4. Dobynette
       
      He logrado simplemente definiendo un nombre arbitrario para ActiveSheet y luego usando los comandos nombre.Activate y nombre.Select.
      0