在 VSTO 中对 Range 对象进行排序
在 Excel 的 VSTO 2010 中,Range.Sort
方法似乎对我不起作用。这是我的示例代码。它将数字 1 到 20 以相反的顺序放入 A 列中,然后尝试对它们进行排序,但未成功。
Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet;
Enumerable.Range(1, 20).ToList().ForEach(i => sheet.Cells[21 - i, 1] = i);
sheet.Columns[1].Sort();
根据文档,不带参数的 Sort
将按升序排序。以防万一我尝试指定 Order1: XlSortOrder.xlAscending
。
我还尝试使用
sheet.Columns[1].Select().Sort();
首先选择列,但这也不起作用。
如何对范围
单元格进行排序?
In VSTO 2010 in Excel, the Range.Sort
method doesn't seem to work for me. Here's my example code. It puts the numbers 1 to 20 in reverse order in column A, and then unsuccessfully tries to sort them.
Worksheet sheet = Globals.ThisAddIn.Application.ActiveSheet;
Enumerable.Range(1, 20).ToList().ForEach(i => sheet.Cells[21 - i, 1] = i);
sheet.Columns[1].Sort();
According to the documentation, the Sort
with no arguments will sort in ascending order. Just in case I tried specifying Order1: XlSortOrder.xlAscending
.
I also tried
sheet.Columns[1].Select().Sort();
to select the column first, but this didn't work either.
How can I sort a Range
of cells?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我在 VBA 中尝试了您的方法,并收到错误“范围类的排序方法失败”。
我通过将范围作为方法的“Key1”参数传递来解决这个问题。看似多余,但确实有效。这是应用了相同修复的示例代码:
I tried your approach in VBA and receved the error "sort method of range class failed".
I resolved that by passing the range as the "Key1" argument of the method. Seems redundant, but it works. Here's your sample code with the same fix applied: