将字表单元格中的值设置为范围

时间:2018-05-05 05:12:29

标签: vba ms-word

我正在编写代码来将单词表格单元格的数值设置为书签(以及稍后在文档中书签的交叉引用)。我遇到的问题是我只能将单元格本身设置为范围,当我交叉引用boorkmark时会导致格式问题。我宁愿为数值本身添加书签,因为这不会导致格式化问题。

Dim BMRange As Word.Range  


Set BMRange = Activedocument.Tables(1).Cell(2, 2).range


Activedocument.Bookmarks.Add Name:="ExampleBookmark", Range:=BMRange 


Set BMRange = Activedocument.Tables(1).Cell(2, 3).Range
BMRange .Collapse wdCollapseStart

BMRange.InsertCrossReference ReferenceType:="Bookmark", ReferenceKind:= _
wdContentText, ReferenceItem:="ExampleBookmark", InsertAsHyperlink:=True, _
IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "

2 个答案:

答案 0 :(得分:0)

我要点如下:

Dim BMRange As Range
Dim tbl1 As Table

With ActiveDocument
    Set tbl1 = .Tables(1)
    Set BMRange = .Range(Start:=tbl1.Cell(2, 2).Range.Start, _
                         End:=tbl1.Cell(2, 2).Range.End)
    BMRange.MoveEnd Unit:=wdCharacter, count:=-1
    .Bookmarks.Add name:="ExampleBookmark", Range:=BMRange
End With

With tbl1.Cell(2, 3).Range
    .Collapse (wdCollapseStart)
    .InsertCrossReference ReferenceType:="Bookmark", ReferenceKind:= _
                          wdContentText, ReferenceItem:="ExampleBookmark", InsertAsHyperlink:=True, _
                          IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
End With

或者,有不同的风格选择:

Dim BMRange As Range

With ActiveDocument
    With .Tables(1)
        Set BMRange = .Parent.Range(Start:=.Cell(2, 2).Range.Start, _
                             End:=.Cell(2, 2).Range.End)
    End With

    BMRange.MoveEnd Unit:=wdCharacter, count:=-1    
    .Bookmarks.Add name:="ExampleBookmark", Range:=BMRange

    With .Tables(1).Cell(2, 3).Range
        .Collapse (wdCollapseStart)
        .InsertCrossReference ReferenceType:="Bookmark", ReferenceKind:= _
                              wdContentText, ReferenceItem:="ExampleBookmark", InsertAsHyperlink:=True, _
                              IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
    End With
End With

答案 1 :(得分:0)

当您为表格的任何部分添加书签时,您可以使用以下行编码的公式字段从文档中的其他位置引用该表格中任何单元格中的数值:

{= Sum(Tbl B2)}

其中' Tbl'是书签名称和' B2'是细胞参考。

至于你在做什么,你甚至不需要书签,因为它在同一张桌子里。只需使用编码为:

的公式字段

{= B2}

您可以通过编程方式执行此操作:

Dim Rng As Range
With ActiveDocument
  Set Rng = .Tables(1).Cell(2, 3).Range
  Rng.End = Rng.End - 1
  .Fields.Add Range:=Rng, Type:=wdFieldEmpty, Text:="=B2", PreserveFormatting:=False
End With

注意:如果您手动创建字段,则必须在文档中创建上述示例的字段大括号(即' {}')本身通过 Ctrl - F9 Cmd - F9 在Mac上);你不能简单地输入或复制&从这条消息中粘贴它们。