Macro para bajar renglones

Me podrías ayudar con una macro que realize la siguiente función:
Tengo un useform que pone datos en la celdas, y le hice un botón de aceptar, lo que quiero que haga ese botón es que me pocisione en la siguiente celda, por ejemplo:
Escribo datos en la celda a1, b1, c1, y cuando le de aceptar me posicione en la celda a2 para seguir escribiendo.
SDLS

2 Respuestas

Respuesta
1
OK bueno es muy simple tienes que hacer es el uso de una función llamada cells.
Entonces usa esto:
Haz doble clic en el botón insertado, luego entonces estará para que insertes el siguiente código:
Dim columna As Integer
Dim fila As Integer
Dim i As Double
fila = 1
columna = 1
i = False
Do While i = False
Cells(fila, columna).Activate
If Len(Cells(fila, columna).Value) > 1 Then
fila = fila + 1
Else
Cells(fila, columna).Value = TextBox1.Value
i = True
End If
Loop
Básicamente emplee variables dentro de la función cells la cual puede ser dinámica, emplee luego la función do while para que busque la celda vacía para escribir y no me sustituya los valores y listo!.
Saludos, y bueno y si ves la necesidad en tu vida de las macros deberías tomar un curso sobre macros se de un sitio que sirve bastante y es muy económico son unos tesos en hacer macros programadas a medida y dar cursos de esto es en www.ayconcol.com hay uno muy bueno metete en www.ayconcol.com/foro ahí encontraras la opción de learning center y ay hay excelentes ofertas de cursos muy económicos y excelentes. Ya he trabajado con ellos y certifico su excelente servicio y calidad.
Ok gracias por tu recomendación. Pero la macro que hiciste para mi te la agradezco pero creo que no me funciona a la perfección, para ser exactos quiero insertar datos en las celdas C3, I3, K3, T3, con una userfom usando textbox, el detalle esta en que en el botón que tengo de aceptar debería pasarme a la celda C4 para empezar a escribir y no lo hace, y también mi función que tengo de limpiar los texbox después del botón de aceptar como que esta mal pero para que te des una idea hay te va el código:
Private Sub boton_de_aceptar()
Dim columna As Integer
Dim fila As Integer
Dim i As Double
fila = 1
columna = 1
i = False
Do While i = False
Cells(fila, columna).Activate
If Len(Cells(fila, columna).Value) > 1 Then
fila = fila + 1
Else
Cells(fila, columna).Value = TextBox1.Value
i = True
End If
Loop
Rem Empty Limpia Los Textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
End Sub
No tranquilo mira es que hice un ejemplo con aplicativos a otra cosa
Enonces pues lo corregi asi:
Do While i = False
If Range("c3").Value <> "" Then
    If Range("i3").Value <> "" Then
        If Range("k3") <> "" Then
            If Range("t3") <> "" Then
            i = True
            Else
            Range("T3") = TextBox1.Value
            i = True
            End If
        Else
        Range("k3").Value = TextBox1.Value
        i = True
        End If
    Else
    Range("i3").Value = TextBox1.Value
    i = True
    End If
Else
Range("c3").Value = TextBox1.Value
i = True
End If
Loop
Respuesta
1
Con la forma ya te llena un rango de Celdas...
A1, B1,C1 ... ZZ1... ok?
Cuando presiones Aceptar
Ter cambie a A2.. ¿es correcto?
¿En qué momento debe hacer el cambio simplemente cuando el des aceptar?
Si cuando le doy aceptar me debe posicionar en el siguiente renglón, si lo hacer pero también borra los datos. Aquí esta un ejemplo:
Private Sub botondeaceptar_Click()
Selection.Offset(1, 0).Select
Selection.EntireRow.Insert
Rem Empty Limpia Los Textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
Rem Textbox1.SetFocus Envía el cursor al Textbox1 para volver a capturar los datos
TextBox1.SetFocus
End Sub
Private Sub botondelimpiar_Click()
Range("A2:D2").Value = Empty
Rem Empty Limpia Los Textbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
Rem Textbox1.SetFocus Envía el cursor al Textbox1 para volver a capturar los datos
TextBox1.SetFocus
End Sub
Private Sub TextBox1_Change()
Range("A2").Select
ActiveCell.FormulaR1C1 = TextBox1
End Sub
Private Sub TextBox2_Change()
Range("B2").Select
ActiveCell.FormulaR1C1 = TextBox2
End Sub
Private Sub TextBox3_Change()
Range("C2").Select
ActiveCell.FormulaR1C1 = TextBox3
End Sub
Private Sub TextBox4_Change()
Range("D2").Select
ActiveCell.FormulaR1C1 = TextBox4
End Sub
si gustas la puedes descargar de aqui:
http://www.megaupload.com/?d=LX4U0GPY
De entrada como tienes que por cada vez que cambie los toxt box cargue el contenido...
Cuando ejecutas la instrucción...
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
Como esta cambiando el TextBox, se activa el TextBox1_Change de cada uno y ahora las pone "", y como esto se esta asignando a
Range("A2").Select
ActiveCell.FormulaR1C1 = TextBox1
Entonces carga el nuevo valor... que es ""....
Por eso estas perdiendo la información....
Ahora cambia, en el botón de aceptar:
'Selection.Offset(1, 0).Select
'Selection.EntireRow.Insert
Por:
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Rows("2:2").Select
Selection.Interior.ColorIndex = xlNone
Range("A2").Select
Lo probé y jalo...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas