vba - 范围已变成表格,宏将无法运行

标签 vba excel

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

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

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

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

相关文章:

excel - 备份+恢复特定代码行的 IDE 书签

xml - 如何将工具提示添加到我的自定义 Excel 功能区 UI?

vba - .Cells(.Rows.Count ,"A").End(xlUp).row 的含义

取一组分数的平均值的 VBA 错误

excel - 用单元格确定形状位置

vba - 将一个数组复制到另一个数组

java - Microsoft Excel 中的特殊字符问题

vba - 如何使用 Excel VBA 获取阿拉伯月份名称

java - 通过Java读取excel文件

excel - Google 文档导出带双引号的 CSV