根据文档中的书签更改 ComboBox 选择

Change ComboBox selection based on Bookmark in the Document

我是 vba 的新手,我一直在为我的 Word 文档制作用户表单。我正在尝试根据文档本身中的书签文本将某个组合框 select 作为其项目之一。我正在使用 if 语句来检查书签的文本,如果它匹配,它应该将组合框的 selected 项目更改为我选择的项目。我对 vba 知之甚少,而且我很难让它发挥作用。我不确定我哪里出错了。这是我的代码。

Private Sub UserForm_Initialize()

    Me.cbxShipFrom.AddItem ("My Company")
    Me.cbxShipFrom.AddItem ("Warehouse")
    Me.cbxShipFrom.AddItem ("Warehouse 2")
    Me.cbxShipFrom.AddItem ("Other...")

    If ActiveDocument.Bookmarks("shipfrom").Range.Text = "MY COMPANY" & vbCrLf & "123 BEETLE ST" & vbCrLf & "MYCITY, ST xZIPx" Then
        Me.cbxShipFrom.Value = Me.cbxShipFrom.ListIndex(0)
    End If

End Sub

你必须使用 CHR(13) 而不是 vbCrLf

此外:

Me.cbxShipFrom.ListIndex(0)

不是有效的表达式,因为 ListIndex 属性 return 是整数而不是数组

您最有可能想使用:

Me.cbxShipFrom.List(0)

和return组合框列表的第一个元素

最后,您可能希望对代码进行以下小重构:

Private Sub UserForm_Initialize()
    With Me.cbxShipFrom
        .AddItem ("My Company")
        .AddItem ("Warehouse")
        .AddItem ("Warehouse 2")
        .AddItem ("Other...")
        If ActiveDocument.Bookmarks("shipfrom").Range.Text = "MY COMPANY" & Chr(13) & "123 BEETLE ST" & Chr(13) & "MYCITY, ST xZIPx" Then
            .Value = .List(0)
        End If
    End With
End Sub