Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi all,
I have a UserForm with a TextBox and a CommandButton. I want to write some text on the TexBox using the 'SendMessage' API when the CommandButton is clicked . I am able to get the window handle of the TextBox control by using the 'apiGetFocus' but for somw reason, the text is not added !!!! Code: Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long 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_SETTEXT = &HC Private Sub CommandButton1_Click() TextBox1.SetFocus Hndle = apiGetFocus SendMessage Hndle, WM_SETTEXT, 0, ByVal "WOW!" End Sub Any help would be much appreciated. Regards. |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() All of the MSForms controls are windowless, so none of the API calls that return window handles will work on them. The window handle returned by your GetFocus API call is for a Window that is part of the UserForm itself, rather than any of the controls on it. Is there some reason you need to write to the textbox this way? It would be much easier to just set its Text property. -- Rob Bovey, Excel MVP Application Professionals http://www.appspro.com/ * Take your Excel development skills to the next level. * Professional Excel Development http://www.appspro.com/Books/Books.htm "RAFAAJ2000" wrote in message ... Hi all, I have a UserForm with a TextBox and a CommandButton. I want to write some text on the TexBox using the 'SendMessage' API when the CommandButton is clicked . I am able to get the window handle of the TextBox control by using the 'apiGetFocus' but for somw reason, the text is not added !!!! Code: Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long 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_SETTEXT = &HC Private Sub CommandButton1_Click() TextBox1.SetFocus Hndle = apiGetFocus SendMessage Hndle, WM_SETTEXT, 0, ByVal "WOW!" End Sub Any help would be much appreciated. Regards. |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks for the quick reply Rob,
Actually the Hnandle of the UserForm is different from that of the TextBox as shown by the MsggBox in the snippet take below : Code: Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long 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 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Const WM_SETTEXT = &HC Private Sub CommandButton1_Click() Form_Handle = FindWindow(vbNullString, Me.Caption) TextBox1.SetFocus TextBox_Handle = apiGetFocus MsgBox Form_Handle & vbTab & TextBox_Handle SendMessage hndle, WM_SETTEXT, 0, ByVal "WOW!" End Sub The reason I want to use the SendMessage API rather than the Text property is for experimenting purposes only. I saw some similar code on the Web for Access which does work ! I don't see why Excel shouldn't ! Regards. "Rob Bovey" wrote: All of the MSForms controls are windowless, so none of the API calls that return window handles will work on them. The window handle returned by your GetFocus API call is for a Window that is part of the UserForm itself, rather than any of the controls on it. Is there some reason you need to write to the textbox this way? It would be much easier to just set its Text property. -- Rob Bovey, Excel MVP Application Professionals http://www.appspro.com/ * Take your Excel development skills to the next level. * Professional Excel Development http://www.appspro.com/Books/Books.htm "RAFAAJ2000" wrote in message ... Hi all, I have a UserForm with a TextBox and a CommandButton. I want to write some text on the TexBox using the 'SendMessage' API when the CommandButton is clicked . I am able to get the window handle of the TextBox control by using the 'apiGetFocus' but for somw reason, the text is not added !!!! Code: Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long 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_SETTEXT = &HC Private Sub CommandButton1_Click() TextBox1.SetFocus Hndle = apiGetFocus SendMessage Hndle, WM_SETTEXT, 0, ByVal "WOW!" End Sub Any help would be much appreciated. Regards. |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Actually the Hnandle of the UserForm is different from that of the TextBox
as shown by the MsggBox in the snippet take below : You aren't getting the window handle of the UserForm itself, but rather a child window of the UserForm that represents the area you drop controls on. The reason I want to use the SendMessage API rather than the Text property is for experimenting purposes only. I saw some similar code on the Web for Access which does work ! I don't see why Excel shouldn't ! Access uses a much different Forms package than the rest of the Office applications, so they aren't comparable. -- Rob Bovey, Excel MVP Application Professionals http://www.appspro.com/ * Take your Excel development skills to the next level. * Professional Excel Development http://www.appspro.com/Books/Books.htm "RAFAAJ2000" wrote in message ... Thanks for the quick reply Rob, Actually the Hnandle of the UserForm is different from that of the TextBox as shown by the MsggBox in the snippet take below : Code: Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long 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 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Const WM_SETTEXT = &HC Private Sub CommandButton1_Click() Form_Handle = FindWindow(vbNullString, Me.Caption) TextBox1.SetFocus TextBox_Handle = apiGetFocus MsgBox Form_Handle & vbTab & TextBox_Handle SendMessage hndle, WM_SETTEXT, 0, ByVal "WOW!" End Sub The reason I want to use the SendMessage API rather than the Text property is for experimenting purposes only. I saw some similar code on the Web for Access which does work ! I don't see why Excel shouldn't ! Regards. "Rob Bovey" wrote: All of the MSForms controls are windowless, so none of the API calls that return window handles will work on them. The window handle returned by your GetFocus API call is for a Window that is part of the UserForm itself, rather than any of the controls on it. Is there some reason you need to write to the textbox this way? It would be much easier to just set its Text property. -- Rob Bovey, Excel MVP Application Professionals http://www.appspro.com/ * Take your Excel development skills to the next level. * Professional Excel Development http://www.appspro.com/Books/Books.htm "RAFAAJ2000" wrote in message ... Hi all, I have a UserForm with a TextBox and a CommandButton. I want to write some text on the TexBox using the 'SendMessage' API when the CommandButton is clicked . I am able to get the window handle of the TextBox control by using the 'apiGetFocus' but for somw reason, the text is not added !!!! Code: Private Declare Function apiGetFocus Lib "user32" Alias "GetFocus" () As Long 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_SETTEXT = &HC Private Sub CommandButton1_Click() TextBox1.SetFocus Hndle = apiGetFocus SendMessage Hndle, WM_SETTEXT, 0, ByVal "WOW!" End Sub Any help would be much appreciated. Regards. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Macro to update a column in a work based on another work sheet | New Users to Excel | |||
how can i automatically generate work order numbers from work orde | Excel Discussion (Misc queries) | |||
flash object dont work in my excel work sheet | Excel Discussion (Misc queries) | |||
Counting dates in multiple work sheets and work books | Excel Discussion (Misc queries) | |||
Is there away to keep "auto save" from jumping to the first work sheet in the work book? | New Users to Excel |