ListBoxSelectRange – Select or unselect a range of elements in a ListBox

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _    hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _    lParam As Any) As LongPrivate Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _    Any, dest As Any, ByVal numBytes As Long)Const LB_SELITEMRANGE = &H19B' Select or deselect all the ListBox items in the specified range'' use newState = True to select, or False to deselect' it affects all items if the last two arguments are omittedSub ListBoxSelectRange (lb As ListBox, ByVal newState As Boolean, _    Optional firstItem As Long, Optional lastItem As Long = -1)    Dim lParam As Long    ' account for omitted lastItem argument.    If lastItem < 0 Then lastItem = lb.ListCount - 1    ' lParam must contain the first item's index in its low-order word    ' and the last item's index in its high-order word.    ' We need this method to avoid overflow.    CopyMemory lParam, firstItem, 2    CopyMemory ByVal VarPtr(lParam) + 2, lastItem, 2    SendMessage lb.hwnd, LB_SELITEMRANGE, newState, ByVal lParamEnd Sub

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: