** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Macro en varias hojas
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoMacro en varias hojas

 Responder Responder
Autor
Mensaje
Reaben Ver desplegable
Habitual
Habitual


Unido: 04/Octubre/2012
Estado: Sin conexión
Puntos: 55
Enlace directo a este mensaje Tema: Macro en varias hojas
    Enviado: 25/Abril/2020 a las 18:48
Buenas tardes compañeros. 
Lo que necesito hacer es muy sencillo, pero no se me ocurre como. 
Yo tengo unos datos que necesito ordenar de menor a mayor en base a la fecha. El problema es que tengo que tengo que hacer lo mismo en muchas hojas. Pensé en una macro, pero obviamente, cuando cambio de hoja, los pasos se repiten en la hoja donde se creo la macro. 
¿Como puedo hacer para que la macro se ejecute en la hoja en la que estoy trabajando? O mejor aún, si se le puede ordenar que después de ejecutarla cambie el solito de hoja y repita la operación. 
Gracias de antemano. Os dejo aqui mi codigo por si es de utilidad: 
Sub Macro1()
'
' Macro1 Macro

'
    Range("B2:B11").Select
    ActiveWorkbook.Worksheets("Hoja2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja2").Sort.SortFields.Add Key:=Range("B2"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja2").Sort
        .SetRange Range("A2:C11")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: en línea
Puntos: 5976
Enlace directo a este mensaje Enviado: 26/Abril/2020 a las 12:51

- (Supuesto) Tienes varios hijos, miras a Pablo y le dices «¡Pablo ve a tu cuarto!», miras a Juan y le dices «¡Pablo ve a tu cuarto!», ...  Juan no irá a su cuarto ¿Verdad?, pues Excel hace lo mismo ;  si desde la Hoja 3 le dices «Ordena la Hoja2»...



Prueba con algo similar a:

Sub Macro1()

  Dim hoja As Worksheet

  For Each hoja In Worksheets(Array("Hoja2", "Hoja3", "Hoja4"))

    hoja.Activate

    Range("B2").Select

    hoja.Sort.SortFields.Clear

    hoja.Sort.SortFields.Add Key:=Range("B2"), SortOn:=xlSortOnValues, _

        Order:=xlAscending, DataOption:=xlSortNormal

    With hoja.Sort

      .SetRange Range("A2:C11")

      .Header = xlNo

      .MatchCase = False

      .Orientation = xlTopToBottom

      .SortMethod = xlPinYin

      .Apply

    End With

  Next hoja

End Sub




Saludos desde Tenerife.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable