交叉引用的列表视图不完整

交叉引用的列表视图不完整

我使用的是 Word 2010,经常需要插入交叉引用。需要交叉引用的项目大多是表格编号和图号,例如表 1-2 或图 2-4。它们总是包含章节编号。我想使用宏来简化此交叉引用过程,其功能如下:

  1. 将出现一个带有选项按钮的用户表单,供我指定表格或图形。(例如,我将选择表格。)
  2. 然后,将使用带有列表视图的用户表单显示文档中所有表格的列表。
  3. 我将滚动列表并选择一个我想要参考的列表。例如,我将选择表 3-4。
  4. 将插入“表 3-4”(标签和编号)。

我编写了一个如下的VBA脚本。它由一个标准模块和两个表单模块组成。

标准模块如下所示。

Option Explicit
Public refLabel As String
'
Sub CrossReference()
    Load frmLabel
    frmLabel.Show
    Call Form
End Sub

Private Sub Form()
    MsgBox "Please specify the ” & refLabel & " number to be cross referenced."
    Load frmCrossRef
    frmCrossRef.Show vbModeless
End Sub 

其中一个“frmLabel”的表单模块如下所示,它有一个命令按钮和两个选项按钮。

Private Sub CommandButton1_Click()
    If OptionButton1 = True Then
        refLabel = OptionButton1.Caption
    ElseIf OptionButton2 = True Then
        refLabel = OptionButton2.Caption
    End If
    frmLabel.Hide
End Sub

选项按钮 1 表示“表格”,选项按钮 2 表示“图形”。根据此用户表单,refLabel 是“表格”或“图形”,具体取决于选择了哪个选项。

另一个“frmCrossRef”的表单模块如下。该表单有一个 ListView 和一个 Command Button。

Private Sub UserForm_Initialize()
    With Me.ListView1
        .View = lvwReport
        .LabelEdit = lvwManual
        .HideSelection = False
        .AllowColumnReorder = True
        .Gridlines = True
        .ColumnHeaders.Add , "_Outline", refLabel, 200
        .FullRowSelect = True
    End With

    items = ActiveDocument.GetCrossReferenceItems(refLabel)

    For Each Item In items
        ListView1.ListItems.Add , , Item
    Next
End Sub

Private Sub CommandButton2_Click()
    ind = ListView1.SelectedItem.Index

    Selection.InsertCrossReference ReferenceType:=refLabel, _
        ReferenceKind:=wdOnlyLabelAndNumber, _
        ReferenceItem:=ind, InsertAsHyperlink:=True, IncludePosition:=False
    Unload Me
End Sub

它看起来和我预期的一样,但是 ListView 没有显示完整的表格或图形列表。虽然有大约 20 个表格或图形,但列表只显示了其中的几个。

我希望有人能修改脚本。

谢谢。

相关内容