There is no built-in VB function that lets you know whether a control – such as a ListBox – is currently displaying a vertical scrollbar. Here’s a pair of functions that check the control’s style bits and return a Boolean that tells if a vertical or horizontal scrollbar is visible:
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long) As LongConst GWL_STYLE = (-16)Const WS_VSCROLL = &H200000Const WS_HSCROLL = &H100000Function HasHorizontalScrollbar(ctrl As Control) As Boolean HasHorizontalScrollbar = (GetWindowLong(ctrl.hwnd, _ GWL_STYLE) And WS_HSCROLL)End FunctionFunction HasVerticalScrollbar(ctrl As Control) As Boolean HasVerticalScrollbar = (GetWindowLong(ctrl.hwnd, GWL_STYLE) And WS_VSCROLL)End Function
Using these functions is easy:
If HasVerticalScrollBar(List1) Then ' List1 is displaying a vertical scrollbarEnd If