You can determine the line where the caret is in a multiline TextBox control by sending the control a EM_LINEFROMCHAR message, as follows:
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal _ hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As LongConst EM_LINEFROMCHAR = &HC9Function GetTextBoxCurrentLine(TB As TextBox) As Long GetTextBoxCurrentLine = SendMessage(TB.hWnd, EM_LINEFROMCHAR, -1, _ ByVal 0&) + 1End Function
For example:
Print "Caret is on line " & GetTextBoxCurrentLine(Text1.hWnd)