根据文档中的书签更改 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
我是 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