¿Tengo un textbox multiline y quiero copiar el valor de cada linea del textbox en celdas diferentes?

Soy nuevo en la programación y nuevo en el foro.

1 respuesta

Respuesta
1

En un textbox multinline, realmente no tienes una línea por cada línea que ves, todo lo que tienes en el textbox es una sola línea largototota, que puede mostrarse en varias líneas, dependiendo de la longitud del textbox.

Ahora para pasar cada "línea" a una celda, tendrías que partir esa línea largototota en pedazos de un mismo tamaño.

Por ejemplo:

Si quieres partir la línea de 5 en 5 caracteres, podrías poner el siguiente código y te va dejar cada 5 caracteres desde la celda A1 hacia abajo

Private Sub CommandButton1_Click()
j = 1
For i = 1 To Len(TextBox1)
Cells(j, "a") = Mid(TextBox1, i, 5)
i = i + 4
j = j + 1
Next
End Sub

Saludos. Dam
Si es lo que necesitas.

Muchas gracias experto, si es lo que necesito, pero me gustaria partir la linea de Chr(13) a Chr (13), ¿es posible?

¿Qué es eso de la línea Chr(13)?

Mejor dime a partir de que fila de y de qué columna quieres que se pongan las líneas, dime por ejemplo a partir de la celda B7

Utiliza esta macro, cambia en la macro la siguiente la línea

Celda = "B7" por la celda en donde quieres que empiece el pegado .

También cambia en la macro esta línea para indicar de cuantos caracteres quieres cada línea: pedazo = 5, pon el número de caracteres que quieres.

Private Sub CommandButton1_Click()

'por.dam

celda = "B7"

j = range(celda).row
k = range(celda).column

pedazo = 5

For i = 1 To Len(TextBox1)
Cells(j, k) = Mid(TextBox1, i, pedazo)
i = i + pedazo - 1
j = j + 1
Next
End Sub

Saludos. Dam

Realmente lo que aparece en el textbox es el valor de unas celdas, y para separar los valores visualmente en lineas diferentes en el textbox pongo Chr(13), y lo que me gustaría es que en vez de coger un número determinado de caracteres, lo hiciese de Chr(13) a Chr(13). Siento la mala explicacion

Puedes poner el código con el que cargas en el textbox

Aquí tienes la macro del textbox,

Private Sub UserForm_Initialize()


Nombre_fichero_activo = ActiveWorkbook.Name
Nombre_hoja_activa = ActiveSheet.Name


Cliente = Range("f2"): If Cliente = "" Then Cliente = "_"
Instalación = Range("g2"): If Instalación = "" Then Instalación = "_"
Marca = Range("h2"): If Marca = "" Then Marca = "_"
Modelo = Range("i2"): If Modelo = "" Then Modelo = "_"
Potencia = Range("j2"): If Potencia = "" Then Potencia = "_"


Nombre_todo = Cliente & Chr(13) & Instalación Marca & " " & Modelo & " " & Potencia
Nombre_todo1 = Marca & Chr(13) & Modelo & Chr(13) & Potencia


TextBox1.Value = Nombre_todo & Chr(13) & Nombre_todo1


End Sub

Utiliza la siguiente macro

Private Sub CommandButton1_Click()
'Parte un textbox multilinea en celdas
'por.dam
j = 4 'fila 4
k = 4 'columna D
For i = 1 To Len(TextBox1)
    If Mid(TextBox1.Value, i, 1) <> Chr(13) Then
        If Mid(TextBox1.Value, i, 1) <> Chr(10) Then
            cadena = cadena & Mid(TextBox1.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

el resultado de cada línea del texto del texbox1 te lo pone empezando en la celda D4, si quieres que se ponga cada línea hacia abajo, deja así el código, si quieres que se ponga en columnas hacia la derecha, comenta esa línea j = j + 1 y quita el comentario a esta línea 'k = k + 1

Si quieres otra celda cambia este par de líneas j = 4 k = 4 por la final y la columna que deseas.

Saludos. Dam

Aunque mis explicaciones de mi problema no fueron muy buenas, el experto no perdió la paciencia y me soluciono el problema, muchas gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas