2017-07-06 3 views
0

この記録済みのマクロは1枚のシートにしか適用されませんが、コピーして貼り付けてすべてのシート名を変更しました。正しいシート名でもなかった)。どのように私はブックのすべてのシートをソートすることができます(8のようです)。この記録されたマクロをブック内のすべてのシートに適用する方法

Sub Sort_Design_NEB() 

    Range("A1").Select 
ActiveWorkbook.Worksheets("NEB_D").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("NEB_D").Sort.SortFields.Add Key:= _ 
    Range("E2:E55"), SortOn:=xlSortOnValues, Order:=xlAscending,  DataOption:= _ 
    xlSortNormal 
ActiveWorkbook.Worksheets("NEB_D").Sort.SortFields.Add Key:= _ 
    Range("H2:H55"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 
ActiveWorkbook.Worksheets("NEB_D").Sort.SortFields.Add Key:= _ 
    Range("G2:G55"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 
With ActiveWorkbook.Worksheets("NEB_D").Sort 
    .SetRange Range("A1:H55") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

End Subの

答えて

1

ワークブックのすべてのシートのためのループを試してみてください。このように:

Dim WS_Count As Integer 
    Dim I As Integer 

    ' Set WS_Count equal to the number of worksheets in the active 
    ' workbook. 
    WS_Count = ActiveWorkbook.Worksheets.Count 

    ' Begin the loop. 
    For I = 1 To WS_Count 
     Range("A1").Select 
     With ActiveWorkbook.Worksheets(I) 
      .Sort.SortFields.Clear 
      .Sort.SortFields.Add Key:= _ 
      .Range("E2:E55"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
      xlSortNormal 
      .Sort.SortFields.Add Key:= _ 
      .Range("H2:H55"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
      xlSortNormal 
     .Sort.SortFields.Add Key:= _ 
      .Range("G2:G55"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
      xlSortNormal 
     End With 
     With ActiveWorkbook.Worksheets(I).Sort 
      .SetRange Range("A1:H55") 
      .Header = xlYes 
      .MatchCase = False 
      .Orientation = xlTopToBottom 
      .SortMethod = xlPinYin 
      .Apply 
     End With 
Next I 

更新ありThomas Inzinaに感謝します。

+2

すべての範囲の参照を修飾する必要があります。 'Range(" E2:E55 ")'はこの 'ActiveWorkbook.Worksheets(I).Range(" E2:E55 ")のように修飾されるべきです。私は 'ActiveWorkbook.Worksheets(I)'を使用して、乱雑さを減らします。 –

+0

これは範囲Gで列をソートする際に機能しますが、範囲ではありません。 – samred

+0

@Thomas - これを試してみます – samred

関連する問題