德尔福 - Excel。如何撤消排序?

时间:2014-10-11 18:19:17

标签: excel delphi sorting

在Delphi XE6中,我通过我正在编写的插件以编程方式在Excel(2010/2013)中对数据进行排序(以便能够为以后的复制操作识别行)。我通过......进行(范围)排序。

  XLApp.Range['A1', LastSheetCell].Sort(XLApp.Range[FirstSortCell, LastSortCell], xlAscending, EmptyParam, EmptyParam,
    xlDescending, EmptyParam, xlAscending, xlYes,
    EmptyParam, False, xlTopToBottom, xlSyllabary);

我复制了数据后,我想将这些行恢复为原始顺序。我能找到的唯一解决方案是添加一个额外的列,添加一个整数(如rownumber),然后在完成后,对此rownumber列进行排序,然后删除该列。

还有其他方法吗?我已经检查过..功能区菜单上没有启用排序/清除选项,因此不能通过菜单功能取消此操作。

2 个答案:

答案 0 :(得分:0)

您可能希望在排序

之前将原始数据分配给Range或Variant变量

设置rngOriginalData = XLApp.Range [FirstSortCell,LastSortCell]

答案 1 :(得分:0)

不幸的是,这不是Delphi问题本身,而是Excel自动化设计中的一个问题(错误?/功能?你决定,它似乎是MS的故意);它也发生在Excel VBA宏中。

对“Excel VBA Macro Undo”之类的内容进行网络搜索,以获得涂料以及一些可能的(尽管是klugey)解决方法。

HTH