"范围类的排序方法失败" -错误

时间:2017-07-03 12:57:46

标签: excel excel-vba vba

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

我得到"范围类的排序方法失败"当试图发送excel文件时。我对VB不太熟悉,所以我希望有人可以看一下裸机excel表数据,并告诉我问题出在哪里。

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

enter image description here

更新

调试错误后,编译器停在以下行:

int16_t data_16
memcpy(&data_16, &data[index], sizeof(int16_t));
int data_16_32 = data_16

以下是此部分的完整代码:

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

1 个答案:

答案 0 :(得分:3)

出现问题是因为在表单中,您尝试对数据进行排序是在表中,即所谓的ListObject。从你的样本图片中可以清楚地看到这一点。

这也是为什么在将值复制粘贴到另一个常规WorkSheet时代码可以正常工作的原因。

简而言之:如果更改VBA不适合您,请删除表格格式。否则,您将必须测试要排序的Range是否属于ListObject的一部分,如果是,则更改代码以便对ListObject.Range进行排序

示例:

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