用sendmessage发送lb_getselitems即可: Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const LB_DELETESTRING = &H182 Private Const LB_GETSELCOUNT = &H190 Private Const LB_GETSELITEMS = &H191Private Sub Command1_Click() Dim i As Long i = SendMessage(List1.hwnd, LB_GETSELCOUNT, 0, ByVal 0&) MsgBox "有" + CStr(i) + "个条目被选中" If i = 0 Then '没有item被选中 Exit Sub End If Dim itemIndex() As Long ReDim itemIndex(i - 1) Call SendMessage(List1.hwnd, LB_GETSELITEMS, i, itemIndex(0)) Dim s As String For i = 0 To UBound(itemIndex) s = s + " " + CStr(itemIndex(i)) Next MsgBox "它们的index分别是:" + s 'listbox条目的index从0开始,即第1项为0 End SubPrivate Sub Form_Load() Dim i As Long For i = 1 To 20 Me.List1.AddItem "line " + CStr(i) Next End Sub
'得到选中的值 Private Sub Command1_Click() Dim i As Long Dim ii As Longi = List1.ListCount For ii = 0 To i - 1 If List1.Selected(ii) = True Then Debug.Print List1.List(ii) End If Next ii End Sub
Private Sub Command1_Click() Dim i As Integer Dim iCount As Integer
iCount = List1.ListCount - 1 i = 0 Do While i <= iCount If List1.Selected(i) = True Then List1.RemoveItem i i = i - 1 iCount = iCount - 1 End If i = i + 1 Loop End Sub
Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const LB_DELETESTRING = &H182
Private Const LB_GETSELCOUNT = &H190
Private Const LB_GETSELITEMS = &H191Private Sub Command1_Click()
Dim i As Long
i = SendMessage(List1.hwnd, LB_GETSELCOUNT, 0, ByVal 0&)
MsgBox "有" + CStr(i) + "个条目被选中"
If i = 0 Then '没有item被选中
Exit Sub
End If
Dim itemIndex() As Long
ReDim itemIndex(i - 1)
Call SendMessage(List1.hwnd, LB_GETSELITEMS, i, itemIndex(0))
Dim s As String
For i = 0 To UBound(itemIndex)
s = s + " " + CStr(itemIndex(i))
Next
MsgBox "它们的index分别是:" + s 'listbox条目的index从0开始,即第1项为0
End SubPrivate Sub Form_Load()
Dim i As Long
For i = 1 To 20
Me.List1.AddItem "line " + CStr(i)
Next
End Sub
Private Sub Command1_Click()
Dim i As Long
Dim ii As Longi = List1.ListCount
For ii = 0 To i - 1
If List1.Selected(ii) = True Then
Debug.Print List1.List(ii)
End If
Next ii
End Sub
Dim i As Integer
Dim iCount As Integer
iCount = List1.ListCount - 1
i = 0
Do While i <= iCount
If List1.Selected(i) = True Then
List1.RemoveItem i
i = i - 1
iCount = iCount - 1
End If
i = i + 1
Loop
End Sub