首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel -在VBA中添加自定义排序列表

Excel -在VBA中添加自定义排序列表
EN

Stack Overflow用户
提问于 2019-05-31 06:26:15
回答 1查看 1.1K关注 0票数 1

我有一些代码,这些代码首先从ODBC刷新一组数据,然后刷新与该数据链接的几个枢轴。

枢轴需要有一个自定义排序顺序,以便将数据以“正确”的顺序显示给客户。

排序顺序需要由客户定义,并且可以随时更改。为此,我在设置工作表中添加了两个表,其中包含组名和帐户代码。然后,他们可以将这些表中的行按他们想要的顺序排列。

然后,我需要将这些表中的数据添加到可以在枢轴上设置的排序列表中。

我使用Application.AddCustomList将自定义列表添加到Excel中。如果我只尝试添加一个列表,它就可以正常工作,但是当它试图添加第二个列表时,它会出现以下错误:

对象'AddCustomList‘的方法'_Application’失败“。

以下是代码:

代码语言:javascript
运行
复制
    ' Deletes old sort orders
        On Error Resume Next
        Dim i As Long
        For i = 1 To Application.CustomListCount
           Application.DeleteCustomList (i)
        Next i

        On Error GoTo 0

    ' Adds custom sort for customers to appplication
        Application.AddCustomList ListArray:=Range("tblSortList[Account Code]")

    ' Gets the number of the custom sorts
        CustomerSortNo = Application.CustomListCount


    ' Adds custom sort for groups to appplication
         Application.AddCustomList ListArray:=Range("tblGroupSort[Group]")


    ' Gets the number of the categorysort
        CategorySortNo = Application.CustomListCount

    ' Sorts the pivots
        Pt.SortUsingCustomLists = True
        PTTotals.SortUsingCustomLists = True
        PTYearGroup.SortUsingCustomLists = True
        PTGroupAvg.SortUsingCustomLists = True


        Pt.PivotFields("Account Code").DataRange.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=CustomerSortNo + 1  ' +1 as No Calcualtion is number 1.
        PTTotals.PivotFields("Account Code").DataRange.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=CustomerSortNo + 1  ' +1 as No Calcualtion is number 1


        Pt.PivotFields("Group").DataRange.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=CategorySortNo + 1  ' +1 as No Calcualtion is number 1.
        PTTotals.PivotFields("Group").DataRange.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=CategorySortNo + 1  ' +1 as No Calcualtion is number 1
        PTYearGroup.PivotFields("Group").DataRange.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=CategorySortNo + 1  ' +1 as No Calcualtion is number 1
        PTGroupAvg.PivotFields("Group").DataRange.Sort Order1:=xlAscending, Type:=xlSortLabels, OrderCustom:=CategorySortNo + 1  ' +1 as No Calcualtion is number 1

当前,它将在行上失败:Application.AddCustomList ListArray:=Range("tblGroupSort[Group]")

如果我重新排序代码,并添加组排序列表,它将运行良好和错误的帐户代码列表。

我已经尝试将自定义列表添加到每个子列表中,但是没有什么不同。

如何添加两个范围列表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-31 09:33:37

分配和使用自定义列表的代码可以工作,但是循环删除它们,不起作用。

您必须向下执行列表以捕获每个元素(如果删除了一个元素,则对更改编号):

代码语言:javascript
运行
复制
For i = Application.CustomListCount To 1 Step -1
   Application.DeleteCustomList (i)
Next i
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56389749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档