当我有值时,如何获取组合框中项目的 ListIndex,以便我可以从具有相同列表的列表框中删除该项目?
How do I get the ListIndex of an Item in a Combobox when I have the Value, so I can remove the Item from a ListBox with the same list?
我有一个列表框 SkuList,其列表等于单独的组合框 SkuBox 的列表。我想要做的是从列表框 SkuList.
中删除为组合框 SkuBox 选择的值
Private Sub UserForm_Activate()
Dim Esh As Worksheet
Set Esh = ThisWorkbook.Sheets("Result")
Dim r_sku As Range
If Esh.Range("A2") <> "" Then
For Each r_sku In Esh.Range("A2", Esh.Range("A2").End(xlDown))
Me.SkuBox.AddItem r_sku.Value
Next r_sku
End If
Me.SkuList.List = Me.SkuBox.List
End Sub
Private Sub SkuBox_Change()
Me.SkuList.List = Me.SkuBox.List
Me.SkuList.RemoveItem (SkuBox.Value)
End Sub
关于删除项目的最后一节不起作用,因为 .RemoveItem 需要 ListIndex。我的问题是,如何获取 SkuBox.Value?
的 ListIndex
您可以使用 ListIndex,但这在控件之间并不准确。一旦您开始删除项目,SkuList 和 SkuBox 中项目的索引就会不同。
我的 VBA 还没准备好,但我没有看到任何 ID 属性,因此您需要按照说明进行操作。循环并按文本查找项目。
以下应该可行,但我的建议是进入并尝试一下。如果您调试并单步执行代码,智能感知将为您提供大量信息,您可以使用这些信息来发现属性并弄清楚如何做事。
Private Sub SkuBox_Change()
Dim selectedSkuBoxValue As String
selectedSkuBoxValue = SkuBox.Value
SkuList.ListIndex = -1
Dim listItem
For Each listItem In SkuList.List
If listItem = selectedSkuBoxValue Then
SkuList.Value = selectedSkuBoxValue
Exit For
End If
Next listItem
If SkuList.ListIndex > -1 Then
SkuList.RemoveItem SkuList.ListIndex
End If
End Sub
我有一个列表框 SkuList,其列表等于单独的组合框 SkuBox 的列表。我想要做的是从列表框 SkuList.
中删除为组合框 SkuBox 选择的值Private Sub UserForm_Activate()
Dim Esh As Worksheet
Set Esh = ThisWorkbook.Sheets("Result")
Dim r_sku As Range
If Esh.Range("A2") <> "" Then
For Each r_sku In Esh.Range("A2", Esh.Range("A2").End(xlDown))
Me.SkuBox.AddItem r_sku.Value
Next r_sku
End If
Me.SkuList.List = Me.SkuBox.List
End Sub
Private Sub SkuBox_Change()
Me.SkuList.List = Me.SkuBox.List
Me.SkuList.RemoveItem (SkuBox.Value)
End Sub
关于删除项目的最后一节不起作用,因为 .RemoveItem 需要 ListIndex。我的问题是,如何获取 SkuBox.Value?
的 ListIndex您可以使用 ListIndex,但这在控件之间并不准确。一旦您开始删除项目,SkuList 和 SkuBox 中项目的索引就会不同。
我的 VBA 还没准备好,但我没有看到任何 ID 属性,因此您需要按照说明进行操作。循环并按文本查找项目。
以下应该可行,但我的建议是进入并尝试一下。如果您调试并单步执行代码,智能感知将为您提供大量信息,您可以使用这些信息来发现属性并弄清楚如何做事。
Private Sub SkuBox_Change()
Dim selectedSkuBoxValue As String
selectedSkuBoxValue = SkuBox.Value
SkuList.ListIndex = -1
Dim listItem
For Each listItem In SkuList.List
If listItem = selectedSkuBoxValue Then
SkuList.Value = selectedSkuBoxValue
Exit For
End If
Next listItem
If SkuList.ListIndex > -1 Then
SkuList.RemoveItem SkuList.ListIndex
End If
End Sub