“范围类的sorting方法失败” – 错误

我有一个电子表格,它不配合我们发送这些excel文件的excel处理器中的macros。 要使其工作的唯一方法是将值复制到新的电子表格并手动调整date格式。 只有在这些新的电子表格中,才可以通过Excel处理器发送,而不会出现打嗝。

当试图通过发送excel文件时,我得到“范围类的sorting方法失败”。 我不太熟悉VB,所以我希望有人可以看看这些裸露的Excel表格数据,并告诉我问题存在的地方。

以下是电子表格前几个条目的屏幕截图。

在这里输入图像说明

更新:

在debugging错误时,编译器停在下面一行:

Columns("A:H").Sort key1:=Range("H2"), order1:=xlAscending, Header:=xlYes 

以下是本节的完整代码:

 'Sort the rows based on the data in column C Range("H1") = "Index" Columns("A:H").Sort key1:=Range("H2"), order1:=xlAscending, Header:=xlYes Application.ScreenUpdating = True 'Add big formula Range("I2:I" & DataWBLRow) = BigConcat Range("J2:J" & DataWBLRow) = FormString3 

发生这个问题是因为在表格中,你正在尝试对数据进行sorting,这个表格就是一个所谓的ListObject 。 从您的示例图片中,这一点也很清楚。

这也是为什么当您将这些值复制粘贴到另一个常规的工作表时,该代码可以正常工作。

简而言之:如果改变VBA不是你的select,摆脱表格格式。 否则,你将不得不testing如果要sorting的范围是否是ListObject一部分,如果是,那么更改代码,以便对ListObject.Range进行sorting

例:

 Sub SortCols() Dim ws As Worksheet Dim lo As ListObject Set ws = Worksheets("Sheet1") Set lo = ws.ListObjects(1) 'My Table is range A1:H10 lo.Range.Sort key1:=Range("H2") 'Works perfectly ws.Columns("A:H").Sort key1:=Range("H2"), order1:=xlAscending, Header:=xlYes 'Error as described in question. End Sub