【发布时间】:2019-05-31 06:26:15
【问题描述】:
我有一些代码首先刷新来自 ODBC 的一组数据,然后刷新链接到该数据的几个枢轴。
枢轴需要具有自定义排序顺序,以便以“正确”顺序向客户显示数据。
排序顺序需要由客户定义,并且可以随时更改。为此,我在设置工作表上添加了两个包含组名称和帐户代码的表。然后,他们可以按照他们希望的顺序对这些表中的行进行排序。
然后,我需要将这些表中的数据添加到可以在数据透视表上设置的排序列表中。
我正在使用Application.AddCustomList 将自定义列表添加到 Excel 中。如果我只是尝试添加一个列表,这很好用,但是当它尝试添加第二个时,它会出错:
“对象'_Application'的方法'AddCustomList'失败”。
下面是代码:
' 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]")
如果我重新排序代码并首先添加组排序列表,它将在帐户代码列表上正常运行并出错。
我尝试将自定义列表的添加分离到每个子列表中,但没有任何区别。
如何添加两个范围列表?
【问题讨论】:
标签: excel vba pivot-table