如何为Word表格单元格的内容添加书签而不进行单元格格式化(Word VBA)

时间:2018-01-08 05:57:01

标签: vba word-vba

我试图为Word表格单元格的内容添加书签(内容将是数字),以便我可以在文档中的其他位置交叉引用书签 - 目标是如果数字在通过运行"更新所有字段来更改单元格"宏(我已经拥有)我可以更新这些数字的所有文本引用,而无需手动搜索整个文档。我已经通过互联网找到类似的东西(我的改编版本如下所示),但是这个方法的问题是,当我尝试交叉引用书签时,它会保持单元格格式化 - 所以会有文本,然后突然一个随机的单元格,然后更多的文字。关于这种方法的好处是数字确实按照它应该更新,我只是无法摆脱单元格格式化。

Sub BookmarkCurrentCell()

    If Selection.Information(wdWithInTable) Then
        selectedTable = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
        selectedColumn = Selection.Information(wdStartOfRangeColumnNumber)
        selectedRow = Selection.Information(wdStartOfRangeRowNumber)
    End If
    ActiveDocument.Bookmarks.Add Name:="Bookmark_" & selectedTable & "_" & selectedRow & "_" & selectedColumn, Range:=ActiveDocument.Tables(selectedTable).Cell(selectedRow, selectedColumn).Range

End Sub

提前致谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

Sub BookmarkCurrentCell()
Dim rng As Range
    If Selection.Information(wdWithInTable) Then
        selectedTable = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.Count
        selectedColumn = Selection.Information(wdStartOfRangeColumnNumber)
        selectedRow = Selection.Information(wdStartOfRangeRowNumber)
    End If
    Set rng = ActiveDocument.Tables(selectedTable).Cell(selectedRow, selectedColumn).Range
    rng.End = rng.End - 1
    ActiveDocument.Bookmarks.Add Name:="Bookmark_" & selectedTable & "_" & selectedRow & "_" & selectedColumn, Range:=rng

End Sub

我认为问题在于您将书签应用于整个单元格,修改后的代码将范围=设置为单元格区域,然后将范围的末尾移回1个字符,以便它仅包含单元格内容(而不是实际的细胞。)