Vba 从包含合并单元格的表中删除列
我试图从具有水平合并单元格的表中删除列Vba 从包含合并单元格的表中删除列,vba,vsto,ms-word,Vba,Vsto,Ms Word,我试图从具有水平合并单元格的表中删除列 Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3 Selection.Columns.Delete 即使列被删除,合并的单元格也会在删除过程中被删除,留下一个损坏的表 几乎类似的删除行的方法可以很好地工作,如本文所述 解决方法 我在做这样的工作 Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3 Selection.MoveDown Unit:=WdUnit
Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3
Selection.Columns.Delete
即使列被删除,合并的单元格也会在删除过程中被删除,留下一个损坏的表
几乎类似的删除行的方法可以很好地工作,如本文所述
解决方法
我在做这样的工作
Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3
Selection.MoveDown Unit:=WdUnits.wdLine, Count:=2, Extend:=wdExtend
Selection.Cells.Delete
然后将索引1,2处的单元格宽度设置为表的其余行。这样可以避免删除合并的单元格。这样就可以了
Sub DeleteCols()
Dim Col2Delete As Range
Set Col2Delete = Selection.EntireColumn
Col2Delete.Delete
End Sub
单词表并不总是直观的。如果单元格跨越要删除的列,则整个跨越的单元格将始终被删除,如您所示 当我不使用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
首先,我们必须将表视为索引单元格,而不是行/列。(图1) 现在,我们应该选择一个从第二个单元格开始到最后一个单元格结束的范围 最后,删除选择列
Set Rng = Tbl.Range.Cells(2).Range
Rng.End = Tbl.Range.Cells(Tbl.Range.Cells.Count).Range.End
Rng.Select
Selection.Columns.Delete
重要问题-要删除哪列(多少列)?从第一张图片中的选定单元格中删除3列。您的解决方法非常好。我想不出比这更好的了。单词表中没有EntireClum。我相信这只是一个Excel函数。