我徒劳地尝试让下面的宏正确运行。最终目标是一个宏,它将根据两个条件对多个表(在单个工作表上)进行排序,并且也适用于任何活动的工作表。我可以使用精确的表引用创建一个宏,但寻求更灵活的方法以避免每个工作表都有一个宏。
我的大部分代码来自 Doug Glancy 的推荐这个帖子 https://stackoverflow.com/questions/16837547/using-a-macro-to-sort-multiple-tables-based-on-the-same-column,但它无法正常运行(正如原始海报在线程死亡之前指出的那样)。该宏运行时没有错误,但实际上并未对任何数据进行排序。
我认为破损的部分是Key:=lo.ListColumns("Name of table column").Range
部分。我对该语法不够熟悉,无法对其进行故障排除。
我很感激任何建议或替代方案!另外,如果我的要求根本不清楚,请告诉我。
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 促使我仔细研究宏的行为。我意识到宏有时会进行排序,尽管很少正确。我只是添加了.SortFields.Clear
之前.SortFields.Add
行,它会清除任何现有的排序以重新开始,可以说是宏中的排序命令。这是功能齐全的宏:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)