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


The Best Mechanical Keyboards For Programmers: Where To Find Them
When it comes to programming, a good mechanical keyboard can make all the difference. Naturally, you would want one of the best mechanical keyboards for programmers. But with so many