Hola, estoy tratando de hacer una macro con un Userform que contiene un Textbox multilínea donde lo que busco es escribir códigos separados por renglón, y al hacer clic en el CommandButton mande estos datos directamente a la fila siguiente en blanco (después de la última celda llena) separados con renglones, encontré un par de ejemplos y busque adaptarlos a mis necesidades pero lo que hace el código es escribir todos los datos ingresados en el Textbox en una única celda, eso sí, separados pero lo que yo busco es que se registren en diferentes filas, ambos códigos hacen lo mismo, agradezco de antemano su atención.
Les dejo los códigos:
Private Sub BtnIngresar_Click()
Application.ScreenUpdating = False
With Sheets("Entradas")
.Visible = True
.Select
End With
Dim af As Long
af = Range("A" & Rows.Count).End(xlUp).Row
j = af + 1 'fila
k = 1 'columna
For i = 1 To Len(TxtIngEnt)
If Mid(TxtIngEnt.Value, i, 1) <> Chr(26) Then
If Mid(TxtIngEnt.Value, i, 1) <> Chr(23) Then
cadena = cadena & Mid(TxtIngEnt.Value, i, 1)
End If
Else
Cells(j, k) = cadena
j = j + 1 'para incrementar filas
'k = k + 1 'para incrementar columnas
cadena = ""
End If
Next
Cells(j, k) = cadena
End Sub
——————————————————
Private Sub BtnIngresar_Click()
Application.ScreenUpdating = False
Dim af As Long
With Sheets("Entradas")
.Visible = True
.Select
End With
saltos = Len(TxtIngEnt.Value) - Len(Application.WorksheetFunction.Substitute(TxtIngEnt.Value, Chr(26), ""))
Texto = TxtIngEnt.Value
af = Range("A" & Rows.Count).End(xlUp).Row
For i = af + 1 To saltos
Cells(i, 1) = Mid(Texto, 1, InStr(1, Texto, Chr(26)) - 2)
Texto = Application.WorksheetFunction.Substitute(Texto, Mid(Texto, 1, InStr(1, Texto, Chr(26))), "", 1)
Next
Cells(i, 1) = Texto
End Sub
lo que necesitas es la función Split
Esta función permite dividir un texto en varios, por ejemplo, una lista separada por comas o en tu caso un párrafo separado por saltos de línea
El resultado de esta función es una matriz, así que luego tendrás qeu recorrer tu matriz para ir anotando cada elemento en una celda distinta.
Ejemplo:
Sub test1()
' necesitomas.com
Dim mitexto
Dim MatrizTextos
Dim i
mitexto = "Hola" & vbCrLf & "qué tal" & vbCrLf & "ejemplo"
MatrizTextos = Split(mitexto, vbCrLf) ' considero como separador el salto de línea vbCrLf
' ahora recorremos la matriz, desde el principio al final de la matriz
For i = LBound(MatrizTextos) To UBound(MatrizTextos)
ActiveSheet.Cells(1 + i, 1).Value = MatrizTextos(i)
Next
End Sub
------
Ya sé Excel, pero necesito más.