0

次のコードでは、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

コードがおそらく多くのレベルで改善される可能性があることを私が知っているように、ほんのわずかなポインタであっても、どんな助けにも感謝します。

ありがとう

4

1 に答える 1

0

関数:

Sub SortTableByHeader(ShtN As String, tabN As String, hed1 As Variant) 
Dim hed2 As Range, hed3 As Integer 

Set hed2 = Range(tabN).Rows(0) 
    hed3 = Application.Match(hed1, hed2, 0) 

Range(tabN).Sort Key1:=Range(tabN).Cells(1, hed3), Header:=xlYes 

End Sub

関数の呼び出し:

Sub SortDepartmentName() 
Dim ShtN As String, objName As String, myColHead As Variant 

ShtN = Sheets("Department List").Name 
objName = Sheets("Department List").ListObjects(1).Name 
myColHead = "DepName" 

SortTableByHeader ShtN, objName, myColHead 

End Sub
于 2015-03-02T09:41:29.633 に答える