我正在尝试从具有水平合并单元格的表中删除列
Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3
Selection.Columns.Delete
即使列被删除,合并的单元格也会在此过程中被删除,留下一个损坏的表。
几乎类似的删除行的方法工作正常,如本中所述answer https://stackoverflow.com/q/13818541/167726
解决方法
我正在做这样的事情作为解决办法
Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3
Selection.MoveDown Unit:=WdUnits.wdLine, Count:=2, Extend:=wdExtend
Selection.Cells.Delete
然后将索引 1,2 处的单元格宽度设置为表的其余行。这样您可以避免合并的单元格被删除。
单词表并不总是直观的。如果单元格跨越要删除的列,则整个跨单元格将始终被删除,如您所示。
当我不使用 VBA 时,我总是在删除行或列之前取消合并单元格;否则Word 的行为很难预测。
使用 VBA 我建议如下:
'splits the header row of the current table into 7 cells
Selection.tables(1).cell(1,2).split numrows:=1, numcolumns:=7
'your code to delete columns
Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3
Selection.Columns.Delete
'merge the header row back into one span
ActiveDocument.Range( _
start:= Selection.tables(1).cell(1,2).range.start, _
end := Selection.tables(1).cell(1,5).range.end _
).cells.Merge
或者对于更通用的方法,删除 n 列:
width = Selection.tables(1).columns.count - 1
Selection.tables(1).cell(1,2).split numrows:=1, _
numcolumns:= width - 1
Selection.MoveEnd Unit:=WdUnits.wdCell, Count:= n
Selection.Columns.Delete
ActiveDocument.Range( _
start:= Selection.tables(1).cell(1,2).range.start, _
end := Selection.tables(1).cell(1,width-n-1).range.end _
).cells.Merge
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)