HOLA!!!
La idea es que el código sea fácil y rápidamente legible, en cuanto a "mucho codigo sin sentido", no lo comprendo, el cogido esta y cumple una función, en poner un if en una sola linea no se optimiza nada, mas que ahorrar renglones.
En cuanto a tu código, no solo le falto en End Sub, declaraste un procedimiento y le pasaste parámetros en ves de declarar una función, tampoco devuelve ningún valor, ademas faltan declarar variables. La idea estaba y funcionaba, pero el código estaba incompleto.
Empiezo enumerar...
Codigo sin sentido por que:
Dim Lineas() As String 'Auxiliar donde se guardan las lineas
Dim I As Long 'Correcto
Lineas = Split(Texto.Text, vbNewLine)
'Borro el contenido de Texto
Texto.Text = vbNullString
For I = 0 To UBound(Lineas)
If I <> NumeroLinea Then
'usas 3 renglones cuando se deberia usar uno ya que solo se hace una llamada
Texto.Text = Texto.Text & Lineas(I) & vbCrLf
End If
Next
Borrar_Linea = Texto.Text ' sin sentido totalmente
y por este otro:
Private Function Contar_Lineas_A_Lo_Pro(Texto As TextBox) As Long
Dim Lineas() As String' gastas un array mas osea mas memoria y 3 lineas en vez de 1 como abajo
Lineas = Split(Texto.Text, vbNewLine)
'Y luego cuento la dimencion de la matriz
Contar_Lineas_A_Lo_Pro = UBound(Lineas)
End Function
contra:
Private Function XLines(TXT As TextBox) As Long
XLineas = UBound(Split(TXT.Text, vbNewLine))+1
End Function
Para elmiminar una linea
no es necesario que sea una funcion, un procedimiento alcanza ya que no se debe
devlver retorno alguno.
PD: Raul el codigo antes de la modificacion era asi:
Private sub DeleteLine (XLine as long, TXT as TextBox)
Dim Aux() as string
Aux = Split(TXT.Text, VbNewLine)
Txt.text=Vbnullstring
For X = 0 to ubound(aux)
if X <> XLine then txt.text = txt.text & Aux(x) & VbNewLine
Next
GRACIAS POR LEER!!!