Código vba para registrar dentro de un rango de celdas.

Necesito ayuda con un código para un botón que me registre el contenido de 5 textbox, pero a partir de la fila 6 y hasta la fila 16. Es importante que el límite sea la fila 16, que no pase de ahí.

1 Respuesta

Respuesta
2

Te dejo un código para el pase a la hoja activa. Le faltarían controles de contenido pero si resuelve tu consulta ;)

Private Sub CommandButton1_Click()   'pase a la hoja activa
'x Elsamatilde
'control de filas
If [C16] <> "" Then
    MsgBox "Se llegó al límite de la tabla" 'si la tabla aún está vacía x puede ser < a fila 6
Else
'primer fila disponible
    x = [C17].End(xlUp).Row + 1
    'si la tabla está vacía x dará una fila < a 6
    If x < 6 Then x = 6
    Range("C" & x) = TextBox1
    Range("D" & x) = TextBox2
    Range("E" & x) = TextBox3
    Range("F" & x) = TextBox4
    Range("G" & x) = TextBox5
End If
End Sub

 Se controla la col C por lo tanto el textbox1 nunca debiera quedar vacío.

Sdos y no olvides valorar la respuesta.

Elsa

https://youtube.com/channel/UCSftX2GN...

http://aplicaexcel.com/index.htm

Hola Elsa Matilde. No, no resuelve mi consulta. No hace absolutamente nada, no me da error, pero no registra. Tu código no lo entiendo bien, pero lo que necesito es una macro que solo permita registros desde la fila 5 y col. "c", hasta la fila 16 col. "H", Una vez se complete esa fila no permita realizar más registros. 

Antes mencionaste fila 6... ahora 5... eso se puede arreglar.

Pero dónde están tus 5 textbox... ¿y el botón o como se llame al pase de datos a la hoja? ¿Están en un Userform?

Debieras dejar más detalles si no puedes adaptar el código a tu modelo. Imágenes, nombres de los controles, estás en la hoja activa o no, etc, etc

Hola Elsa. Lo he intentado con el siguiente código, pero no sé como modificar para que arranque en la fila 5 y no pase de la 16. Y lo ejecuto desde un formulario.

Private Sub CommandButton2_Click()
Dim f As Long, h1 As Worksheet
Set h1 = Sheets("Hoja1")
    f = h1.Range("C" & Rows.Count).End(3).Row + 1
    h1.Cells(f, "C").Value = TextBox1.Value
    h1.Cells(f, "D").Value = TextBox2.Value
    h1.Cells(f, "F").Value = Val(TextBox3.Value)
    h1.Cells(f, "G").Value = Val(TextBox4.Value)
    h1.Cells(f, "H") = h1.Cells(f, "G") * h1.Cells(f, "F")
End Sub

Comentado: Te dejo un código para el pase a la hoja activa ...

Pero si declaraste una hoja con Set significa que no es la hoja activa. En ese caso necesitas anteponer la hoja a cada rango o referencia. Revisa tu libro porque seguramente los datos fueron a la hoja que tenías activa en ese momento ;)

Cualquiera de las 2 sintaxis son correctas: h1.Range("G" & x)    o   h1.Cells(x, "G") 

Nota: no se qué pasa con el Snippet que no me deja cargar el código... te lo dejo copiado aquí:

Private Sub CommandButton2_Click()      'pase a la hoja 'Hoja1'
'x Elsamatilde
Set h1 = Sheets("Hoja1")       

'control de filas
If h1.[C16] <> "" Then
MsgBox "Se llegó al límite de la tabla" 'si la tabla aún está vacía x puede ser < a fila 6
Else
'primer fila disponible
x = h1.[C17].End(xlUp).Row + 1
'si la tabla está vacía x dará una fila < a 5
If x < 5 Then x = 5
h1.Range("C" & x) = TextBox1
h1.Range("D" & x) = TextBox2
h1.Range("F" & x) = Val(TextBox3)
h1.Range("G" & x) = Val(TextBox4)
h1.Range("H" & x) = h1.Cells(x, "G") * h1.Cells(x, "F")
End If
End Sub

PD) Ya no empieza en fila 6 sino en 5... ya no tienes 5 controles Textbox sino 4 y tu primer imagen muestra un rango de C:G y ahora parece que es hasta H. Debieras dejar los detalles con precisión así luego no tendrás dificultades para adaptar las macros que se te envían.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas