No dejar líneas en blanco al momento de ingresar registros

Los tres campos de Descripción si deben de estar pero cuando ingrese solo en1 o 2 líneas no me deje el espacio en la tercera. Gracias Amigos

Private Sub CommandButton1_Click()
Sheets("Hoja1").Select 'Selecciona la Hoja1
ActiveSheet.Unprotect 'Desprotege la hoja activa. Sin contraseña

Sheets("hoja1").Activate
If TextBox2 = "" Or TextBox3 = "" Or TextBox5 = "" Or _
TextBox15 = "" Or TextBox19 = "" Then
MsgBox "Está dejando campos requeridos vacios favor complete", vbExclamation, "Almacen"
TextBox3.SetFocus
Exit Sub
End If
Range("A" & Rows.Count).End(xlUp).Offset(3).Select
ActiveCell = TextBox2.Value
ActiveCell.Offset(0, 1) = TextBox3.Value
ActiveCell.Offset(0, 2) = TextBox5.Value
ActiveCell.Offset(0, 3) = TextBox19.Value
ActiveCell.Offset(1, 3) = TextBox20.Value
ActiveCell.Offset(2, 3) = TextBox21.Value
ActiveCell.Offset(0, 4) = ComboBox1.Value
ActiveCell.Offset(0, 5) = ComboBox2.Value
ActiveCell.Offset(0, 6) = TextBox7.Value
ActiveCell.Offset(0, 7) = TextBox15.Value
Set h1 = Sheets("IMPRIMIR")

h1.Range("F14") = Me.TextBox2.Text
h1.Range("C17") = Me.TextBox3.Text
h1.Range("C20") = Me.TextBox5.Text
h1.Range("C23") = Me.TextBox15.Text
h1.Range("C26") = Me.ComboBox1.Text
h1.Range("C27") = Me.ComboBox2.Text
h1.Range("C32") = Me.TextBox19.Text

MsgBox "Registro ingresado exitosamente", vbInformation, "Servitap"
PrepararNuevo

End Sub

3 respuestas

Respuesta
2

En una textbox puedes almacenar cientos de caracteres. Entonces podrías tener un solo textbox para la descripción, podría quedar así:

Private Sub CommandButton1_Click()
    Sheets("Hoja1").Select 'Selecciona la Hoja1
    ActiveSheet.Unprotect 'Desprotege la hoja activa. Sin contraseña
    If TextBox2 = "" Or TextBox3 = "" Or TextBox5 = "" Or _
       TextBox15 = "" Or TextBox19 = "" Then
        MsgBox "Está dejando campos requeridos vacios favor complete", vbExclamation, "Almacen"
        TextBox3.SetFocus
        Exit Sub
    End If
    u = Range("A" & Rows.Count).End(xlUp).Row + 1
    Cells(u, "A") = TextBox2.Value
    Cells(u, "B") = TextBox3.Value
    Cells(u, "C") = TextBox5.Value
    Cells(u, "D") = TextBox19.Value
    Cells(u, "E") = ComboBox1.Value
    Cells(u, "F") = ComboBox2.Value
    Cells(u, "G") = TextBox7.Value
    Cells(u, "H") = TextBox15.Value
    '
    Set h1 = Sheets("IMPRIMIR")
    h1.Range("F14") = Me.TextBox2.Text
    h1.Range("C17") = Me.TextBox3.Text
    h1.Range("C20") = Me.TextBox5.Text
    h1.Range("C23") = Me.TextBox15.Text
    h1.Range("C26") = Me.ComboBox1.Text
    h1.Range("C27") = Me.ComboBox2.Text
    h1.Range("C32") = Me.TextBox19.Text
    '
    MsgBox "Registro ingresado exitosamente", vbInformation, "Servitap"
    PrepararNuevo
End Sub

Si quieres conservar los 3 textbox de la descripción, entonces podrías unirlos de esta forma en una sola celda

    Cells(u, "D") = TextBox19.Value & " " & TextBox20.Value & " " & TextBox21.Value

De esa forma ya no estarás dejando filas vacías.


.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Gracias Dante si quiero mantener los 3 textbox de la descripción pero cada registro en su celda.

Entonces hay que encontrar el último registro con datos tomando como base la columna "D". La macro completa quedaría así:

Private Sub CommandButton1_Click()
'Act.Por.Dante Amor
    Sheets("Hoja1").Select 'Selecciona la Hoja1
    ActiveSheet.Unprotect 'Desprotege la hoja activa. Sin contraseña
    largo = Len(TextBox1)
    If TextBox2 = "" Or TextBox3 = "" Or TextBox5 = "" Or _
       TextBox15 = "" Or TextBox19 = "" Then
        MsgBox "Está dejando campos requeridos vacios favor complete", vbExclamation, "Almacen"
        TextBox3.SetFocus
        Exit Sub
    End If
    u = Range("D" & Rows.Count).End(xlUp).Row + 1
    Cells(u, "A") = TextBox2.Value
    Cells(u, "B") = TextBox3.Value
    Cells(u, "C") = TextBox5.Value
    Cells(u, "D") = TextBox19.Value
    Cells(u + 1, "D") = TextBox20.Value
    Cells(u + 2, "D") = TextBox21.Value
    Cells(u, "E") = ComboBox1.Value
    Cells(u, "F") = ComboBox2.Value
    Cells(u, "G") = TextBox7.Value
    Cells(u, "H") = TextBox15.Value
    '
    Set h1 = Sheets("IMPRIMIR")
    h1.Range("F14") = Me.TextBox2.Text
    h1.Range("C17") = Me.TextBox3.Text
    h1.Range("C20") = Me.TextBox5.Text
    h1.Range("C23") = Me.TextBox15.Text
    h1.Range("C26") = Me.ComboBox1.Text
    h1.Range("C27") = Me.ComboBox2.Text
    h1.Range("C32") = Me.TextBox19.Text
    '
    MsgBox "Registro ingresado exitosamente", vbInformation, "Servitap"
    PrepararNuevo
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

https://1drv.ms/f/s!AgdHb_KdAoGvf3_2FXSBYZ6whRg  aca dejo el enlace para que chequen el archivo gracias

¿Para qué es el enlace?

¿Probaste con la nueva macro que te envié?

Respuesta
1

Por lo menos de lo que se aprecia en tus imágenes tu problema sería esta línea:

Range("A" & Rows.Count).End(xlUp).Offset(3).Select

Esa línea baja siempre tres filas. sugiero cambiarla por esta:

Range("D" & Rows.Count).End(xlUp).Offset(1).Select

Ojo, es lo que se aprecia al menos. Prueba y comentas

Abraham Valencia

PD: Creo que sería más práctico un solo "TextBox" para tu descripción, solo tendrías que ponerle su propiedad "MultiLine" en " True"

Gracias Abraham Valencia, el MultiLine esta bien pero en este caso quiero llevar un registro de cada "Descripción del Problema", lo único que necesito es que al siguiente registro no deje espacios.      Range("D" & Rows.Count).End(xlUp).Offset(1).Select sobre escribe en la siguiente linea.

Como ya comenté, solo has dejado imágenes y no se termina de entender tu problema. Quizá viendo tu archivo, para entenderte mejor, seria lo ideal

Abraham Valencia

Serias tan amable de enviarme tu correo para enviarte el archivo

Hugo Campollo

Sugiero usar OnDrive, o Google Drive o Dropbox o similar

Abraham Valencia

Cometí un error al sugerirte lo anterior pues mire pero no vi el "Select". Ahora sí, esta línea:

Range("A" & Rows.Count).End(xlUp).Offset(3).Select

Cámbiala por estas dos (y en ese orden):

fila = Range("D" & Rows.Count).End(xlUp).Offset(1).Row
Range("A" & fila).Select

Y listo.

Salu2

Abraham Valencia

Respuesta
1

No estoy muy seguro de sí esto es lo que quieres pero prueba con esto y me dices:

Range("A" & Rows.Count).End(xlUp).Offset(1,0).Select

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas