【问题标题】:Deleting columns from a table with merged cells从包含合并单元格的表中删除列
【发布时间】:2014-01-23 18:42:14
【问题描述】:

我正在尝试从具有水平合并单元格的表格中删除列

Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3
Selection.Columns.Delete

即使列被删除,合并的单元格也会在此过程中被删除,从而留下一个损坏的表格。

删除行的几乎类似方法工作正常,如answer中所述

解决方法

我正在做类似的事情

Selection.MoveEnd Unit:=WdUnits.wdCell, Count:=3
Selection.MoveDown Unit:=WdUnits.wdLine, Count:=2, Extend:=wdExtend
Selection.Cells.Delete

然后将索引 1,2 处的单元格宽度设置为表格的其余行。这样可以避免合并单元格被删除。

【问题讨论】:

  • 重要问题-您要删除哪一列(多少)?
  • 从第一张图片的选定单元格中删除3列。
  • 您的解决方法很棒。我想不出更好的了。

标签: vba vsto ms-word


【解决方案1】:

单词表并不总是直观的。如果一个单元格跨越要删除的列,那么整个跨越的单元格将始终被删除,如您所示。

当我不使用 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

【讨论】:

    【解决方案2】:

    应该这样做

    Sub DeleteCols()
        Dim Col2Delete As Range
        Set Col2Delete = Selection.EntireColumn
        Col2Delete.Delete
    End Sub
    

    【讨论】:

    • 整个列在 Word 表格中不可用。我相信这是 Excel 独有的功能。
    【解决方案3】:

    首先,我们必须不将表格视为行/列,而是将其视为索引单元格。 (图1)

    现在,我们应该选择从第二个单元格开始到最后一个单元格结束的范围。

    最后,删除选择列

            Set Rng = Tbl.Range.Cells(2).Range
            Rng.End = Tbl.Range.Cells(Tbl.Range.Cells.Count).Range.End
            Rng.Select
            Selection.Columns.Delete
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多