【问题标题】:How to bookmark the contents of a Word table cell without carrying over the cell formatting (Word VBA)如何在不保留单元格格式的情况下为 Word 表格单元格的内容添加书签(Word VBA)
【发布时间】:2018-01-08 05:57:00
【问题描述】:

我正在尝试为 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

提前致谢!

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    试试这个:

    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
    

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

    【讨论】:

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