gpt4 book ai didi

vba - 如何使录制的宏在任何工作表上工作?

转载 作者:行者123 更新时间:2023-12-04 20:55:01 26 4
gpt4 key购买 nike

我录制了一个宏,按数字(即 A 列)、ID(即 D 列)、最新最旧的日期(即 M 列)对我的 Excel 表进行排序

我希望能够将此宏复制到任何工作表(将具有所有相同的列),但它告诉我“下标超出范围”,因为有不同的名称。

这是宏。工作表名称是“owssvr (1)”,但我希望它能够用于任何具有相同列的工作表,例如:

ActiveWorkbook.Worksheets("owssvr (1)").ListObjects("Table_owssvr__2").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("owssvr (1)").ListObjects("Table_owssvr__2").Sort. _
SortFields.Add Key:=Range("Table_owssvr__2[Number]"), SortOn:=xlSortOnValues _
, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("owssvr (1)").ListObjects("Table_owssvr__2").Sort. _
SortFields.Add Key:=Range("Table_owssvr__2[ID]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
ActiveWorkbook.Worksheets("owssvr (1)").ListObjects("Table_owssvr__2").Sort. _
SortFields.Add Key:=Range("Table_owssvr__2[Date]"), SortOn:= _
xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("owssvr (1)").ListObjects("Table_owssvr__2"). _
Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

我正在考虑使用带有 With 的东西

最佳答案

这应该适用于任何只有一个包含所需列名的列表对象的工作表:

Sub Tester()
Dim tName As String

With ActiveSheet.ListObjects(1).Sort

tName = .Parent.Name 'list name

.SortFields.Clear
.SortFields.Add Key:=Range(tName & "[Number]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.SortFields.Add Key:=Range(tName & "[ID]"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.SortFields.Add Key:=Range(tName & "[Date]"), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal

.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply

End With
End Sub

关于vba - 如何使录制的宏在任何工作表上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com