Word宏:如何排除表排序中的总行并消除错误5992

时间:2019-07-16 02:15:20

标签: vba ms-word

我正在使用宏对具有多个表的Word文件中的表进行排序,它的工作原理很好,但也可悲地对总行进行了排序,所有表的行数都不同,排序前后的表分别是:

表格示例预排序:

pre sort

other example

后排序:

post sort

宏为:(为此,感谢@scenography)

Dim mytable As Table
For Each mytable In ActiveDocument.Tables
mytable.Sort ExcludeHeader:=True, FieldNumber:="Column 2", _
    SortFieldType:=wdSortFieldAlphanumeric,      SortOrder:=wdSortOrderDescending
Next

任何实现此目的的方法?

编辑:

是否可以避免此行的最后一行(总计)?例如:

 Dim last_row As Long last_row = Cells.Find(What:="*", SearchDirection:=xlPrevious).Row ) 

 lLastRow = rng(rng.Rows.Count, 1).Row

有可能删除最后一列(Cum),因为对此值进行排序时不正确。

这里有一个带有Word文档的链接,其中包含我的表格示例以复制结果

https://drive.google.com/file/d/1KpV11dHjON_gFnlAvlegzc3pWVfYipV4/view?usp=sharing

1 个答案:

答案 0 :(得分:0)

很遗憾,您不能从Sort中排除“最后一行”,但是,如果它始终是“总行”,则此解决方法将起作用。

For i = 1 To ActiveDocument.Tables.Count

Set mytable = ActiveDocument.Tables(i)

mytable.Rows(mytable.Rows.Count).Delete

mytable.Sort ExcludeHeader:=True, FieldNumber:="Column 2", _
    SortFieldType:=wdSortFieldNumeric, SortOrder:=wdSortOrderDescending

mytable.Rows(2).Range.Copy
mytable.Rows.Add
mytable.Rows(mytable.Rows.Count).Range.Paste
mytable.Rows(2).Delete

mytable.Cell(1, mytable.Columns.Count).Select
Selection.SelectColumn
Selection.Cells.Delete ShiftCells:=wdDeleteCellsShiftLeft

Next

基本上,我们将排序后的第二行移到最后一行。

表格如下: enter image description here