Private Sub RemoveItemFromText(txt As String) '根据列表文本删除项目 Dim c As Integer, i As Integer c = Combo1.ListCount '列表项数,Combo1是Combo控件 i = 0 While i < c And Combo1.List(i) <> txt '根据文本找到项目的index i = i + 1 Wend If i >= c Then '如果没找到 Debug.Print "未找到项目!" Else Combo1.RemoveItem i '移除项目 End If End Sub
[解决办法]
删除列表项之后,其后面的列表项 Index 会递减。 插入列表项到指定 Index 时,原相同 Index 及以后列表项的 Index 会递增。
其实没有关系,完全可以动态管理。你可以用以下 API 查找相同的项,返回值就是它的 Index:
Private Declare Function SendMessagebyString Lib _ "user32" Alias "SendMessageA" (ByVal hWND As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ ByVal lParam As String) As Long