我正在尝试对Excel表中的数据进行排序以在UserForm中使用。我有保存整个模块声明的Listobject的变量,并在初始化时进行设置。但是,当我尝试应用排序字段键时,它将引发以下错误:
运行时错误“ 1004”:
应用程序定义或对象定义的错误
以下是相关代码部分:
Private lotable_OVERLAY_DETAILS As ListObject
Private Sub UserForm_Initialize()
Set lotable_OVERLAY_DETAILS = OVERLAY_DETAILS.ListObjects("OVERLAY_DETAILS")
Call Sort_OVERLAY_DETAILS
End Sub
Private Sub Sort_OVERLAY_DETAILS()
lotable_OVERLAY_DETAILS.ShowAutoFilter = False 'Clear any existing filters
lotable_OVERLAY_DETAILS.ShowAutoFilter = True
lotable_OVERLAY_DETAILS. _
Sort.SortFields.Add2 key:=Range("OVERLAY_DETAILS[[#All],[PORTFOLIO_NAME]]"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
lotable_OVERLAY_DETAILS. _
Sort.SortFields.Add2 key:=Range("OVERLAY_DETAILS[[#All],[OVERLAY_NAME]]"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With lotable_OVERLAY_DETAILS.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
尝试执行任何lotable_OVERLAY_DETAILS.Sort.SortFields.Add2
行时都会发生错误。这段代码不久前就开始工作了,我使用相同的方法对其他几个表进行了排序。我不确定为什么现在只在此错误上出现此错误。我想念什么?
答案 0 :(得分:0)
我通过在SortFields
行之前添加以下内容解决了这个问题:
lotable_OVERLAY_DETAILS.Sort.SortFields.Clear
原来这些表对它们的排序字段限制为64,即使清除自动筛选器,这些表也仍然存在。
在我的情况下,此错误弹出,因为我一遍又一遍地测试代码。当我这样做时,此特定行添加了两个SortFields
,而其他行仅添加了一个。因此,该表越早越过错误并达到了极限。在添加新过滤器之前清除过滤器可以解决所有问题。