範囲の最初の部分を Range("A:A") として設定した場合、行全体が確実にソートに渡されるようにするにはどうすればよいですか?
データ ID、fname、mname、lname、接尾辞、状態、場所、タイムゾーン
範囲は、開始点と終了点の id を検索することによって選択されます。したがって、Range は、あるシートでは A1:183 であり、別のシートでは A1:A1138 である可能性があります。また、列は G または H で終了します。データにはまだ「マッサージ」が必要です
各シートで D(lname) と B(fname) で並べ替えており、残りの列を含めたいので、データの整合性が維持されます。
これまでのところ、範囲を選択するサブがありますが、機能していないように見えるrng.EntireRow.Selectなしで追加の列にタグを付ける方法がわかりません。
Sub sortRows(bodyName As String, ByRef wksht As Worksheet)
Dim operationalRange As Range, sortRange As Range
Set operationalRange = selectBodyRow(bodyName).EntireRow
Debug.Print "Sorting Worksheet " & wksht.Name & " containing " & operationalRange.Count & " rows."
ActiveWorkbook.Worksheets(wksht.Name).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(wksht.Name).Sort.SortFields.Add Key:=operationalRange, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets(wksht.Name).Sort.SortFields.Add Key:=operationalRange, _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(wksht.Name).Sort
.SetRange operationalRange
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply ' Fails here with:
' Runtime Error '1004':
' The sort reference is not valid. Make sure that it's within the data
' you want to sort, and the first Sort By box isn't the same or blank.
End With
End Sub