在VSTO中对Range对象进行排序

时间:2012-02-24 19:59:13

标签: c# excel vsto

在Excel中的VSTO 2010中,Range.Sort方法似乎对我不起作用。这是我的示例代码。它在A列中以相反的顺序放置数字1到20,然后尝试对它们进行排序失败。

Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet;
Enumerable.Range(1, 20).ToList().ForEach(i => sheet.Cells[21 - i, 1] = i);
sheet.Columns[1].Sort();

根据the documentation,没有参数的Sort将按升序排序。以防万一我尝试指定Order1: XlSortOrder.xlAscending

我也试过

sheet.Columns[1].Select().Sort();

首先选择列,但这也不起作用。

如何对Range个单元格进行排序?

1 个答案:

答案 0 :(得分:1)

我在VBA中尝试了你的方法,并收到错误“范围类的排序方法失败”。

我通过将范围作为方法的“Key1”参数传递来解决这个问题。似乎多余,但它的工作原理。这是您应用相同修复的示例代码:

Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet;
Enumerable.Range(1, 20).ToList().ForEach(i => sheet.Cells[21 - i, 1] = i);
sheet.Columns[1].Sort(sheet.Columns[1]);