良い出発点前にコード化したのは、あなたがやりたいタスクを実行しているマクロを単に記録することです。したがって、J列に日付があるサンプルデータセットから始めれば、マクロの記録を開始し、列Jでデータを並べ替え、記録を停止してコードを確認します。
Sub Sorter()
'
' Sort Macro
'
'
Range("J1").Select
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:= _
Range("J1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("All Active Clients").Sort
.SetRange Range("F2:J23")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
これは私がセルJ1を選択したことを手動でコード化して、次にソート機能が実行されるステップを示しています。これから、私は実際にやりたいことを絞ることができます。例えば、選択J1は不要ですが、私は私のようなものまで、コードをトリミングすることができますなど.sortmethod、心配する必要はありません、以下:
Sub Sorter()
'
' Sort Macro
'
'
Const csDateSt As String = "J1"
Dim shtSort As Worksheet
Dim rngSort As Range
Set shtSort = Sheets("Sheet1")
Set rngSort = shtSort.UsedRange
With shtSort.Sort
.SortFields.Clear
.SortFields.Add Key:= _
Range(csDateSt), _
SortOn:=xlSortOnValues, _
Order:=xlAscending
.SetRange rngSort
.Header = xlNo
.Apply
End With
End Sub
私が行っているすべてが記録されたコードを再編成でありますいくつかのハードコードされた値を定数と変数に変更し、すべてをWithブロックに入れました。私はこれをロードマップとして使用して、必要な場所に同じ種類の構造を配置することができます。
あなたは、このように、でも、別のサブとして、あなたのソート処理を維持し、必要なときだけそれを呼び出すと、データがどこにそれを伝えるために、引数を渡すことができます:
Sub Sorter(ByVal shtSort As Worksheet, ByVal rngSort As Range, ByVal strKey As String)
With shtSort.Sort
.SortFields.Clear
.SortFields.Add Key:= _
Range(strKey), _
SortOn:=xlSortOnValues, _
Order:=xlAscending
.SetRange rngSort
.Header = xlNo
.Apply
End With
End Sub
を次に、あなたのループの中であなたは言うでしょう
Select Case Sheets("template").Range("L" & r).Value
Case Is = "1a"
lr2 = Sheets("EGS lines").Cells(Rows.Count, "L").End(xlUp).Row
Sheets("template").Rows(r).Copy Destination:=Sheets("EGS lines").Range("A" & lr2 + 1)
Case Is = "1b"
lr2 = Sheets("CVS lines").Cells(Rows.Count, "L").End(xlUp).Row
Sheets("template").Rows(r).Copy Destination:=Sheets("CVS lines").Range("A" & lr2 + 1)
End Select
Call Sorter(Sheets("EGS Lines"),Sheets("EGS Lines").range("A1").currentregion, "J1")
Call Sorter(Sheets("CVS Lines"),Sheets("CVS Lines").range("A1").currentregion, "J1")