次のコードでは、DepName 列で DepList という名前のテーブルを並べ替えています。
Sub SortDepNameAZ()
On Error Resume Next
ActiveWorkbook.Worksheets("Department List").ListObjects("DepList").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Department List").ListObjects("DepList").Sort. _
SortFields.Add Key:=Range("DepList[[#All],[DepName]]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Department List").ListObjects("DepList").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
これをより一般的なものにして、特定の名前の代わりに定義された範囲と名前を使用して、関数として使用できるようにしたいと考えています。
以下を使用してみましたが、構文を機能させることができません。
Sub SortDepNamesAZ(lo1 As ListObject, dn1 as Variant)
On Error Resume Next
Set lo1 = Application.ActiveWorkbook.ActiveSheet.ListObject(1)
Dim tabstr As String
tabstr = Application.ActiveWorkbook.ActiveSheet.ListObject(1).Name
lo1.Sort.SortFields.Clear
lo1.Sort.SortFields.Add Key:=Range(tabstr[[#All],[dn1]]), SortOn:= _
xlSortOnValues, Order:=xlAscending 'I think this line is probably wrong??
With lo1.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
コードがおそらく多くのレベルで改善される可能性があることを私が知っているように、ほんのわずかなポインタであっても、どんな助けにも感謝します。
ありがとう