范围已转向表格,宏将无法运行

时间:2016-01-21 16:24:35

标签: excel vba excel-vba

我不得不更改电子表格的格式,下面提到的范围现在是一个表格。

自更改此设置后,我的宏报告“方法'排序'对象'范围'失败”。

我无法直接命名表格,因为代码循环显示电子表格中的所有工作表(排除除外),并且将添加新工作表,我将不知道表格名称/编号。

如何选择表格(位置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

1 个答案:

答案 0 :(得分:0)

如果每张表只有一个表,则可以使用.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