在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列进行排序,然后删除该列。
还有其他方法吗?我已经检查过..功能区菜单上没有启用排序/清除选项,因此不能通过菜单功能取消此操作。
答案 0 :(得分:0)
您可能希望在排序
之前将原始数据分配给Range或Variant变量设置rngOriginalData = XLApp.Range [FirstSortCell,LastSortCell]
答案 1 :(得分:0)
不幸的是,这不是Delphi问题本身,而是Excel自动化设计中的一个问题(错误?/功能?你决定,它似乎是MS的故意);它也发生在Excel VBA宏中。
对“Excel VBA Macro Undo”之类的内容进行网络搜索,以获得涂料以及一些可能的(尽管是klugey)解决方法。
HTH