9 Years
Discussion Span
Last Post by Comatose
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_VSCROLL = &H115
Const SB_BOTTOM = 7

Private Sub Text1_Change()
SendMessage Text1.hwnd, WM_VSCROLL, SB_BOTTOM, 0
End Sub

My application is developed in MS Access using VB. I have a form having multiple textboxes and other controls. Running the code for setting the scrollbar to the end is not working here and throws up an error saying "Object doesn't support this property or method." on line :
SavedWnd = Screen.ActiveControl.hwnd

The code is working in a separate VB application which has a single text box and a button.

Please suggest what could be the solution for this. I think hwnd is not being recognized. Is there any reference which needs to be included to run the same code?


Well, Visual Basic and VBA (Visual Basic For Applications) are NOT the same. Visual Basic (And This Forum is VB 4/5/6, NOT .Net, which is also different [ie: VB express, VB 2005, VB 2008, etc]). That said, code that would often work in VB 6, such as the code I posted with sendmessage, will not work if you are in VBA (VB inside of Access). Now, you could normally get away with selecting and deselecting the listbox in Access, like so:

Me.mylistbox.Selected(Me.mylistbox.ListCount - 1) = True
Me.mylistbox.Selected(Me.mylistbox.ListCount - 1) = False

I believe I also read somewhere that you can pass the DESC sql key word to make it sort the data in the listbox by descending order, which automatically scrolls the listbox... but I haven't tried that.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.