Следующие работы. Ключ в том, как вы указываете, куда должна идти перекрестная ссылка. Я не знаю «почему», но когда вы выбираете всю ячейку, Word решает, что точка вставки находится в предыдущей ячейке. Вероятно, это как-то связано со структурами ячеек в Word - наверняка знают только люди, написавшие основной код Word.
Но, в любом случае, хитрость заключается в том, чтобы сделать это так, как сделал бы пользователь. Обычно пользователь нажимает в ячейке, так что точка вставки (курсор) мигает.
Поскольку, как и в Excel, всегда лучше, чтобы , а не работал с Selection, я изменил код, чтобы использовать объект Range
для цели, на которую идет перекрестная ссылка. Используете ли вы Range
или Selection
- клавиша предназначена для свертывания выбора (например, нажатия клавиши со стрелкой влево или вправо на клавиатуре).
Я также изменил код, чтобы сделать его более эффективным и точным, работая с Document
объектом вместо ActiveDocument
, который может измениться без вашего ведома.
Sub XRefInTable()
Dim WordObject As word.Application
Dim doc As word.Document
Dim tbl As word.Table
Dim rngCell As word.Range
Dim t As Long, NoOfTables As Long
Set WordObject = New Word.Application
Set doc = WordObject.ActiveDocument
NoOfTables = doc.Tables.Count
For t = 1 To NoOfTables
If doc.Tables(t).Title = "AsetRsetTbl" Then
Set rngCell = doc.Tables(t).Cell(2, 2).Range
rngCell.Collapse wdCollapseStart
rngCell.InsertCrossReference ReferenceType:="Bookmark", _
ReferenceKind:=wdContentText, ReferenceItem:=bookmarkname & y, _
InsertAsHyperlink:=True, IncludePosition:=False, _
SeparateNumbers:=False, SeparatorString:=" "
End If
Next t
End Sub