在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
个单元格进行排序?
答案 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]);