【问题标题】:Word- VBA- How To Delete Selected Row in A Table and Protect First Two Rows?Word-VBA-如何删除表格中的选定行并保护前两行?
【发布时间】:2021-03-16 21:21:59
【问题描述】:

以下代码成功删除了表格中的选择。

If Selection.Information(wdWithInTable) Then
    Selection.Rows.Delete
End If

此外,以下代码成功地阻止了前两个表行的删除,但不是基于选择而从底行向上删除。

Dim index As Long
    For index = ActiveDocument.Tables(1).Rows.Count To 3 Step -1
        ActiveDocument.Tables(1).Rows(index).Delete
    Exit For
    Next index

有没有办法将两者结合起来,这样我就可以删除任何选定的行但防止前两行被删除?

【问题讨论】:

  • 您不能“保护父行”(无论您认为“父”行是什么)。内容控件是不同于表格的对象,具有不同的属性和方法。
  • @JohnKorchok - 他的意思是如何修改代码以删除选定的表行,但不允许删除第一行。
  • 谢谢,看了他之前的帖子,我明白了。您仍然无法像使用内容控件一样保护行不被删除。

标签: vba ms-word rowdeleting


【解决方案1】:

如果您清楚说明您要达到的目标,那将会很有帮助。尝试以下方式:

Sub Demo()
With Selection
  If .Information(wdWithInTable) = False Then Exit Sub
  If .Cells(.Cells.Count).RowIndex > 2 Then
    If .Cells(1).RowIndex < 3 Then
      .Start = .Tables(1).Rows(3).Range.Start
    End If
    .Rows.Delete
  End If
End With
End Sub

【讨论】:

  • 谢谢先生。我很抱歉。我编辑了我的问题以提供更清晰的信息。我实际上需要保护前两行。将代码 Rows(2) 更改为 Rows(3) 并将 =1 更改为 &gt;=1 可以防止删除前两行,只要我选择第 1 行或第 2 行。但是,例如,如果有一个包含 5 行的表并且我选择第 4 行,它将删除第 3-4 行。如果我选择第 5 行,它将删除第 3-5 行,依此类推。目标是选择第 4 行并仅删除第 4 行。与第 5 行相同。几乎就在那里。
  • 又一个变种!您真的很喜欢让任何人都难以帮助您解决您的问题...查看修改后的代码。
  • 谢谢先生。很抱歉造成混乱!
猜你喜欢
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多