Copiar los datos en Lineas consecutivas

De nuevo deathwatch.
Tenia otra duda que consulte pero no he obtenido respuesta.
Si puedes te agradecería que me eches una mano con esto.
Mi duda es la siguiente:
La intención es que cuando le de a un botón me copie los datos del form en unas celdas especificas de excel y que cuando se vuelva a cargar el form, copie los datos en la fila debajo a la anterior.
Investigando pude acercarme a la solución, pero no consigo que me lo copie en la siguiente linea inmediata, me lo copia en las mismas siempre.
Te dejo el código que tengo a ver si con tu experiencia me podrías ayudar a corregirlo.
Private Sub CommandButton1_Click() 
Dim linea As Long 
Dim numche As Integer 
Dim proveedor As String 
Dim fecha As Date 
Dim numfac As Integer 
Dim monto As Double 
numche = emitircheque.txt2.Value 
proveedor = emitircheque.cmb1.Value 
fecha = emitircheque.txt1.Value 
numfac = emitircheque.txt4.Value 
monto = emitircheque.txt7.Value 
linea = 6 
If emitircheque.cmb2.Text = "Banesco" Then 
With Sheets("Banesco") 
Cells(linea, 1) = numche 
Cells(linea, 2) = fecha 
Cells(linea, 3) = proveedor 
Cells(linea, 4) = numfac 
Cells(linea, 5) = monto 
Cells(linea, 6) = "H" 
linea = linea + 1 
End With 
ElseIf emitircheque.cmb2.Text = "Provincial" Then 
With Sheets("Provincial") 
Cells(linea, 1) = numche 
Cells(linea, 2) = fecha 
Cells(linea, 3) = proveedor 
Cells(linea, 4) = numfac 
Cells(linea, 5) = monto 
Cells(linea, 6) = "H" 
linea = linea + 1 
End With 
ElseIf emitircheque.cmb2.Text = "Venezuela" Then 
With Sheets("Venezuela") 
Cells(linea, 1) = numche 
Cells(linea, 2) = fecha 
Cells(linea, 3) = proveedor 
Cells(linea, 4) = numfac 
Cells(linea, 5) = monto 
Cells(linea, 6) = "H" 
linea = linea + 1 
End With 
End If 
End Sub

1 respuesta

Respuesta
1
Ok, a ver si entendí
Los datos los copia de A6 a F6 pero cada que abres el form, vuelve a escribir los datos de A6 a F6, sobrescribiendo, en lugar de que los copiara en por ejemplo A7 a F7
¿Es así lo que preguntas?
No!
Los primeros datos se copian en A6:F6. La segunda vez que rellene el form quiero que se copien en A7:F7 y así sucesivamente.
Los datos se copian cada vez que apretó un Botón.
¿Ahora me entiendes?
Gracias por tu tiempo
Antes que nada, quita:
Dim linea as Long
linea=6
y linea=linea+1
Ahora, agrega el siguiente codigo:
Dim Linea As Long
Private Sub UserForm_Activate()
Linea = 6
Range("A6").Select
If ActiveCell.Value <> "" Then
    Do While ActiveCell.Value <> ""
        ActiveCell.Offset(1, 0).Select
    Loop
    Linea = ActiveCell.Row
End If
End Sub
Explico:
(comentarios antes de la linea de codigo)
'Agregas una variable publica de tipo entero largo, la cual puede ser accedida desde cualquier control o codigo
Dim Linea As Long
' usas el metodo Activate, del control userform
Private Sub UserForm_Activate()
' indicamos que linea inicialmente valga 6, por la razon que te doy en la parte del If
Linea = 6
' indicamos donde nos colocaremos inicialmente, correspondiente a la primera fila donde tenemos el primer valor
Range("A6").Select
' la siguiente linea es pensando que la hoja estuviera vacia. Si la hoja ya tiene valores, por lo menos en A6, no habria problema, pero si la hoja estuviera vacia, como las instrucciones siguientes recorren cada fila hasta encontrar una vacia, si A6 estuviera vacia, se seguiria hasta la ultima fila de excel. Espero haberme explicado.
If ActiveCell.Value <> "" Then
' aqui es donde indicamos que se busque la celda vacia
    Do While ActiveCell.Value <> ""
' esta linea es importante, pues va bajando fila por fila, para realizar el recorrido. Si no se indica, como no se hace el recorrido, pues nos mantenemos en la misma celda, se haria un bucle infinito.
        ActiveCell.Offset(1, 0).Select
' cerramos el Do While
    Loop
' una vez encontrando una celda (fila) vacia, nos colocamos en esta, y por medio de .Row, obtenemos la fila donde nos encontramos, de forma que si la celda vacia fue A7, .row devolvera 7, y ese valor se guarda en la variable Linea.
' como es una variable publica, cuando presiones el boton, Linea tendra un valor, y asi por ejemplo, Cells(linea, 1) = numche, seria como Cells(7, 1)...
    Linea = ActiveCell.Row
End If
End Sub
Listo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas