我试图为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
提前致谢!
答案 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个字符,以便它仅包含单元格内容(而不是实际的细胞。)