Option Explicit
Private Declare Function SendMessageBynum Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Const EM_LINEFROMCHAR As Long = &HC9
Private Const EM_LINELENGTH As Long = &HC1
Private Const EM_LINEINDEX As Long = &HBB
Private Sub Command1_Click()
Dim LineaActual As Long
Dim PrimerCaracter As Long
Dim Longitud As Long
' Calculamos la línea donde se encuentra el cursor
LineaActual = SendMessageBynum(Text1.hwnd, EM_LINEFROMCHAR, -1, 0&)
' Determinamos la posición del primer carácter de la
' línea actual
PrimerCaracter = SendMessageBynum(Text1.hwnd, EM_LINEINDEX, _
LineaActual, 0&)
' Calculamos la longitud de la línea seleccionada
Longitud = SendMessageBynum(Text1.hwnd, EM_LINELENGTH, _
PrimerCaracter, 0&) + 1
' Seleccionamos la línea
With Text1
.SelStart = PrimerCaracter
.SelLength = Longitud
.SetFocus
If LTrim(RTrim(Text1.SelText)) <> "" Then 'Si no esta vacia
Text2.Text = Text2.Text & Text1.SelText & vbCrLf
'Borrar la linea en el Text1
.SelStart = PrimerCaracter
.SelLength = Longitud + 1
.SelText = ""
End If
End With
End Sub