我有一個 Listbox SkuList,其串列等于單獨的 Combobox SkuBox的串列。我想要做的是從 Listbox SkuList中洗掉為 Combobox 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?
uj5u.com熱心網友回復:
您可以使用 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/429224.html
