좋은 출발점 전에 코딩 한 것은 단순히 원하는 작업을 수행하는 매크로를 기록하는 것입니다. 따라서 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
I 셀 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")