Imprimir página | Cerrar ventana

Macro en varias hojas

Impreso de: Foro de Access y VBA
Categoría: Otros de Microsoft: Windows y Office
Nombre del foro: Excel
Descripción del foro: Foro de Excel y VBA de Excel
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85212
Fecha de impresión: 19/Abril/2024 a las 02:04


Tema: Macro en varias hojas
Publicado por: Reaben
Asunto: Macro en varias hojas
Fecha de publicación: 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



Respuestas:
Publicado por: AnSanVal
Fecha de publicación: 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.



Imprimir página | Cerrar ventana