'No form crie uma textbox com multiline=true como "Tetx1", outra textbox como "text2"
'e um botao como "command1"
'Cole no form:
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_GETLINECOUNT = &HBA
Private Const EM_LINEINDEX = &HBB
Private Const EM_LINELENGTH = &HC1
Private m_linhas() As String
Private m_numerolinhas As Long
Public Function SplitText(T As TextBox)
Dim num_caracteres As Integer
Dim comp_linha As Long
Dim linha As Integer, slinha As String, istart As Long
On Error Resume Next
' Obtem o número de linhas da textbox
m_numerolinhas = SendMessage(T.hwnd, EM_GETLINECOUNT, 0&, ByVal 0&)
' Dimensiona a matriz m_linhas
ReDim m_linhas(m_numerolinhas)
istart = 1
For linha = 0 To m_numerolinhas - 1
' Obtem o número de caracteres até a enésima linha da textbox
num_caracteres = SendMessage(T.hwnd, EM_LINEINDEX, linha, ByVal 0&)
' Obtem o comprimento da linha em relação ao seu deslocamento
' relativo (num_caracteres) dentro da textbox
comp_linha = SendMessage(T.hwnd, EM_LINELENGTH, num_caracteres, ByVal 0&)
' Obtem o texto referente a linha da textbox
' e atribui a matrix m_linhas
slinha = Mid(T.Text, istart, comp_linha)
m_linhas(linha) = slinha
' Define o novo valor de istart.
istart = istart + comp_linha
Next linha
End Function
Public Function GetTextLine(index As Integer)
Dim ret
On Error Resume Next
Err.Clear
ret = m_linhas(index)
If Err.Number <> 0 Then ret = Null
GetTextLine = ret
End Function
Public Function GetNumLines() As Long
GetNumLines = m_numerolinhas
End Function
Private Sub Class_Initialize()
m_numerolinhas = 0
End Sub
'chamando a função:
Private Sub Command1_Click()
m_numerolinhas = SendMessage(Text1.hwnd, EM_GETLINECOUNT, 0&, ByVal 0&)
Text2 = m_numerolinhas
End Sub