Excel - ejecutar una macro en varias hojas del mismo libro

 
Vista:

ejecutar una macro en varias hojas del mismo libro

Publicado por josep (1 intervención) el 04/04/2013 17:30:29
URGENTE
Buenas tardes,
necesitaria que alguien me ayudara en esta macro, soy nuevo y me encuentro con el siguiente problema:
Cree dos macros en una hoja de un libro que tiene 20 hojas,necesitaria que estas mismas macros pudiera ejecutarlas en cada una de las 20 hojas, ya que solo me funciona en una hoja. yo escribi esto :
Sub Macro1()
'
' Macro1 Macro
' ordenar per data
'
' Acceso directo: CTRL+d
'
Range("C6:G305").Select
ActiveWorkbook.Worksheets("1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("D6:D305"), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"Gener,Febrer,Març,Abril,Maig,Juny,Juliol,Agost,Setembre,Octubre,NOvembre,Desembre" _
, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("C6:C305"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("1").Sort
.SetRange Range("C6:G305")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Sub Macro2()
'
' Macro2 Macro
' ordenar per totals
'
' Acceso directo: CTRL+t
'
ActiveWorkbook.Worksheets("1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("1").Sort.SortFields.Add Key:=Range("G6:G305"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("1").Sort
.SetRange Range("C6:G305")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

ejecutar una macro en varias hojas del mismo libro

Publicado por Antoni Masana (2464 intervenciones) el 05/04/2013 06:52:13
Esta macro Funciona para cualquier numero de Hojas e independientemente de sus nombres

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Sub Borrar_Año_Anterior()
'
' (P) Antoni Masana 
'
 
    Dim Hoja As Worksheet
 
    Text = "¿ Desea borrar los datos del año anterior ?"
    Keys = vbQuestion + vbDefaultButton2 + vbYesNo
    Titulo = "Borrar año anterior"
 
    If MsgBox(Text, Keys, Titulo) = vbYes Then
 
       For Each Hoja In Worksheets
           Sheets(Hoja.Name).Select
           Fecha = Range("A2").Cells
 
          ' --- Verifica si la Celda es una fecha
 
           If IsDate(Fecha) Then
              Dif = Now() - Fecha
 
              ' --- Verifica que tenga más 500 dias
 
              If Dif > 500 Then
 
                 Desde = Format(Fecha, "yyyy/mm/dd")
                 Hasta = Format("01/10/" & Mid$(Str(Year(Fecha) + 1), 2), "yyyy/mm/dd")
 
                 Lin = 3
                 Fin = 0
                 While Fin = 0
                     Celda = Format(Range("A" & Lin).Cells, "yyyy/mm/dd")
                     If Celda >= Hasta Or Celda = "" Then
                        Fin = 1
                     Else
                        Lin = Lin + 1
                     End If
                  Wend
                  Lin = Lin - 1
 
                  Rows("2:" + Mid$(Str(Lin), 2)).Select
                  Selection.Delete Shift:=xlUp
                  Range("A2").Select
 
              Else
 
                 Opc = MsgBox("La hoja tiene menos de 500 días. " + vbCrLf & _
                              "Vuelva a intentarlo a partir del " & Fecha + 500 & _
                              vbCrLf & _
                              vbCrLf & "¿Desea finalizar la MACRO?", _
                              vbExclamation + vbYesNo + vbDefaultButton2, Titulo)
 
                 If Opc = vbYes Then Exit Sub
 
              End If
 
           End If
 
       Next
 
       MsgBox "Macro finalizada", vbInformation + vbOKOnly, Titulo
    End If
End Sub



El Truco esta en el primer FOR y la linea siguiente despues de esto Olvida el

1
ActiveWorkbook.Worksheets("?").


Ya esta en la hoja activa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ejecutar una macro en varias hojas del mismo libro

Publicado por Agustin (1 intervención) el 14/11/2013 02:04:54
Hola que tal disculpen que me entrometa en el tema, pero sabran como restringir la condición para una hoja en especifica, es decir aplicar la condición para todas las hojas, excepto la hoja1 por ejemplo.

De ante mano muchas gracias y espero me puedan ayudar, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar