0
在下面的代码中,我在DepName列上对名为DepList的表进行排序。Excel VBA使用表名的定义名称
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
赞赏任何帮助,哪怕只有几个指针,因为我知道代码也许可以在许多层面上的改善。
感谢
两件事情...'1'摆脱对错误的继续下一步。做适当的错误处理'''你的范围'范围(tabstr [[#全部],[dn1]])'不完全合格。函数如何知道它引用了哪个表单? |一旦你已经注意到上述情况,再次进行测试,并告诉哪条线路给你错误,它是什么错误? –
为了澄清,你想传递一个表引用/名称和列名称的功能,并让函数按列排序表? –
@DougGlancy是的,虽然这是我第一次写一个函数,所以我不知道如何去做。我已经写了这样,它似乎工作: –