A ver si vale esto:
Pones en un módulo el código que te propongo.
Después la llamada sería algo así:
Private Sub Command1_Click()
Textbox2.Text = Replace(Textbox2.Text, GetLine(Textbox2, 5), GetLine(Textbox1, 5))
End Sub
Con esto cambia la línea 5 de Texbox2 por la línea 5 del Texbox1 ¿querías algo así?
Y si pones Textbox2.Text = Replace(Textbox1.Text, Getline(Textbox1, 5), "Hola, Mundo")
Te pone en Texbox2 el contenido de Texbox1 pero con la líneaa 5 cambiada a "Hola Mundo"
Un saludo.
Código:
Option Explicit
Private Const EM_LINEFROMCHAR = &HC9
Private Const EM_GETLINE = &HC4
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As String) _
As Long
'
Public Function GetLine(txtTextBox As TextBox, Optional Linea As Long) As String
Dim LineaActual As String * 255
Dim LineaNumero As Long
Dim Longitud As Long
If Linea = 0 Then 'No se pasó línea
'La que está en la posición del cursor:
LineaNumero = SendMessage(txtTextBox.hwnd, EM_LINEFROMCHAR, txtTextBox.SelStart, 0&)
Else
LineaNumero = Linea - 1 '(Base 0)
End If
LineaActual = String(255, Chr(255))
Call SendMessage(txtTextBox.hwnd, EM_GETLINE, LineaNumero, LineaActual)
Longitud = InStr(LineaActual, Chr(255))
If Longitud > 0 Then
GetLine = Left(LineaActual, Longitud - 1)
Else
GetLine = LineaActual
End If
End Function