I currently use code in a VB project to allow Undo capability for a multi-line text box. I am trying to do the same for a multi-line text box in VBA.

My problem is that the text box in VBA does not have a handle property. I have successfully used the API FindWindow function to return the VBA UserForms handle. I've had no luck though, using FindWindowEx in an attempt to get the child windows (text box) handle. I need this to replace the lines noted below. Don't I?

'***********************************************
Option Explicit

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 Const EM_CANUNDO = &HC6
Private Const EM_UNDO = &HC7

Private Sub Command1_Click()

Dim blnCanUndo As Boolean
Dim lngUndo As Long

blnCanUndo = CanBeUndone

If blnCanUndo = True Then
'??? What's the VBA equivalent of Text1.hwnd below?
lngUndo = SendMessage(Text1.hwnd, EM_UNDO, 0&, 0&)
Else
MsgBox "Nothing to be undone!"
End If

End Sub

Private Function CanBeUndone() As Boolean

Dim lngRet As Long

'??? What's the VBA equivalent of Text1.hwnd below?
lngRet = SendMessage(Text1.hwnd, EM_CANUNDO, 0&, 0&)
CanBeUndone = (lngRet <> 0)

End Function