我必须更改电子表格的格式,下面提到的范围现在是一个表格。
自从更改此设置后,我的宏报告“对象“范围”的“排序”方法失败”。
我无法直接命名表格,因为代码循环遍历电子表格中的所有工作表(排除的工作表除外),并且将添加我不知道其表格名称/编号的新工作表。
如何选择表格(位置 B72:L86)并按 I 列排序?
For Each wsSheet In ThisWorkbook.Worksheets
Select Case wsSheet.Name
Case "Affiliates", "New Report", "Pasted Report", "New Month Or Client", "Set Up Data"
'Do nothing.
Case Else
With wsSheet
.Range("B72:L86").Sort Key1:=.Range("I72"), Order1:=xlDescending
End With
End Select
最佳答案
如果每张纸只有一个表格,您可以使用.ListObjects(*index*)
属性来引用它。
Dim lo as ListObject
With wsSheet
For Each lo in .ListObjects
lo.Sort.SortFields.Add Key:=Range(lo.Name & _
"[[#All],[" & .Range("I72").value & "]]"), SortOn:=xlSortOnValues, Order:= xlDescending
With lo.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next
End With
关于vba - 范围已变成表格,宏将无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34929012/