Word:宏以在没有第一行的表列中设置书签

时间:2018-08-07 12:22:54

标签: vba ms-word

我正在使用Microsoft Word中的宏。 我需要引用一列的整个单元格范围, 第一行或“标题”。

我的最终目标是创建VBA代码,该代码可以剪切D列中的所有值并将其粘贴到A列中。

为此,我依靠书签。我有一个创建表的宏,然后我想插入诸如以下内容:

ActiveDocument.Bookmarks.Add _
  Name:="ProposedMedTargets", Range:=Selection.Tables(1).Columns(6)

但是我需要这个书签来排除第一行。 单元格的范围不是静态的,因为用户可以随时在表中添加新行。 我确实尝试过在网上找到它,但是无法遇到这个特定的用例。

3 个答案:

答案 0 :(得分:0)

(嗯,我敢打赌,无法在Word中为列添加书签-怎么样...)

这可以通过选择第二行中的单元格,然后将所选内容向下扩展所需行数来完成。下面的示例代码在所选内容所在的列中设置了书签。

Sub SetBookmarkForColumn()
    Dim sel As Word.Selection
    Dim nrRows As Long

    Set sel = Selection
    If sel.Information(wdWithInTable) Then
        nrRows = sel.Tables(1).Rows.Count
        sel.Columns(1).Cells(2).Select
        sel.MoveDown Count:=nrRows - 2, Extend:=True
        sel.Document.Bookmarks.Add "ProposedMedTargets", sel.Range
    End If
End Sub

答案 1 :(得分:0)

这是一个简短的方法。

    Selection.SetRange ActiveDocument.Tables(1).rows(2).Cells(2).Range.Start, _
           ActiveDocument.Tables(1).rows.Last.Cells(2).Range.End
    ActiveDocument.Bookmarks.Add "ProposedMedTargets", Selection.Range

答案 2 :(得分:0)

尝试:

Dim r As Long, Rng As Range
Set Rng = Selection.Range
With ActiveDocument
  With .Tables(1)
    r = .Rows.Count - 2
    .Cell(2, 6).Range.Select
  End With
  Selection.MoveDown Count:=r, Extend:=True
  .Bookmarks.Add Name:="ProposedMedTargets", Range:=Selection
End With
Rng.Select
Set Rng = Nothing