macros在两个条件下对多个表进行sorting

我试图得到下面的macros来正确运行。 最终目标是一个macros,它将根据两个条件对多个表(在单个工作表上)进行sorting,并且哪个工作表是活动的。 我可以使用精确的表格引用macros,但是要寻求更灵活的方法来避免每个工作表都有一个macros。

我的代码大部分是从Doug Glancy在这篇文章中的推荐中吸取的 ,但是它并没有正确运行(就像在线程死亡之前注意到的原始海报)。 macros运行没有错误,但不实际sorting的任何数据。

我认为破碎的部分是Key:=lo.ListColumns("Name of table column").Range部分。 我不熟悉这种语法来解决它。

我感谢任何build议或替代品! 另外,让我知道,如果我的要求是不清楚的。

 Sub CustomSort() Dim lo As Excel.ListObject Dim ws As Excel.Worksheet Set ws = ActiveSheet For Each lo In ws.ListObjects With lo.Sort .SortFields.Add Key:=lo.ListColumns("Status").Range, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=lo.ListColumns("Inventory Number").Range, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .Header = xlYes .Apply End With Next lo End Sub 

感谢TomDillinger促使我仔细研究macros观行为。 我意识到这个macros正在sorting,虽然很less正确。 我只是在.SortFields.Add行之前添加了.SortFields.Add ,它清除了所有现有的sorting以重新开始,以便在macros中sorting命令。 这是一个function齐全的macros:

 Sub CustomSort() Dim lo As Excel.ListObject Dim ws As Excel.Worksheet Set ws = ActiveSheet For Each lo In ws.ListObjects With lo.Sort .SortFields.Clear .SortFields.Add Key:=lo.ListColumns("Status").Range, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=lo.ListColumns("Inventory Number").Range, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .Header = xlYes .Apply End With Next lo End Sub