Determine whether a control has a scrollbar

Determine whether a control has a scrollbar

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


Share the Post: