** 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

Macro en varias hojas

 Responder Responder
Autor
Mensaje
Reaben Ver desplegable
Habitual
Habitual


Unido: 04/Octubre/2012
Estado: Sin conexión
Puntos: 55
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Reaben Cita  ResponderRespuesta 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: Sin conexión
Puntos: 5664
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita AnSanVal Cita  ResponderRespuesta 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




Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable