我正在尝试将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
提前感谢!
发布于 2018-01-08 17:45:24
试试这个:
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个字符,以便它只包含单元格内容(而不是实际的单元格)。
https://stackoverflow.com/questions/48144915
复制相似问题