Me copia siempre en la misma fila y no en la siguiente fila vacía

En el siguiente macro, quiero que la información me la copie en la siguiente línea vacía y no en una única fila

Private Sub Worksheet_Change(ByVal Target As Range)'Por.Dante Amor'TRANSFERENCIA    If Not Intersect(Target, Range("G:H")) Is Nothing Then        If Target.Count > 1 Then Exit Sub        If UCase(Cells(Target.Row, "G")) = "PAGO" And _           UCase(Cells(Target.Row, "H")) = "TRANSFERENCIA" Then            '            Application.ScreenUpdating = False            Set l2 = Workbooks("FACT CANC ABRIL 2015.xlsm")            Set h2 = l2.Sheets("TRANSFERENCIA")            u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1            Range("B" & Target.Row & ":F" & Target.Row).Copy            h2.Range("D" & u).PasteSpecial Paste:=xlPasteValues            Application.CutCopyMode = False            End If    End If'CHEQUE    If Not Intersect(Target, Range("G:H")) Is Nothing Then        If Target.Count > 1 Then Exit Sub        If UCase(Cells(Target.Row, "G")) = "PAGO" And _           UCase(Cells(Target.Row, "H")) = "CHEQUE" Then            '            Application.ScreenUpdating = False            Set l2 = Workbooks("FACT CANC ABRIL 2015.xlsm")            Set h2 = l2.Sheets("CHEQUE")            u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1            Range("B" & Target.Row & ":F" & Target.Row).Copy            h2.Range("D" & u).PasteSpecial Paste:=xlPasteValues            Application.CutCopyMode = False            End If    End If'EFECTIVO    If Not Intersect(Target, Range("G:H")) Is Nothing Then        If Target.Count > 1 Then Exit Sub        If UCase(Cells(Target.Row, "G")) = "PAGO" And _           UCase(Cells(Target.Row, "H")) = "EFECTIVO" Then            '            Application.ScreenUpdating = False            Set l2 = Workbooks("FACT CANC ABRIL 2015.xlsm")            Set h2 = l2.Sheets("EFECTIVO")            u = h2.Range("B" & Rows.Count).End(xlUp).Row + 1            Range("B" & Target.Row & ":F" & Target.Row).Copy            h2.Range("D" & u).PasteSpecial Paste:=xlPasteValues            Application.CutCopyMode = False            End If    End IfEnd Sub

Gracias

2 Respuestas

Respuesta
1
Dim UltimaFila, As Integer
                    UltimaFila = Range("A1048576").End(xlUp).Row'busca la ultima fila con datos y se lo asigna a ultimafila
                    UltimaFila = UltimaFila + 1 ' asigno el nuevo valor de ultima fila quien es la que esta vacia
                    Sheets("MetrosProducidos").Select
                    With Selection
                        Cells(UltimaFila, 1).Select'selecciona la fila vacia en la columna A(1)
                            With Selection
                            .HorizontalAlignment = xlCenter
                            .VerticalAlignment = xlCenter
                            .Font.FontStyle = "Arial"
                            .Font.Bold = True
                            .Font.Size = 8
                            .Borders.Color = RGB(0, 0, 0)
                            .Font.Color = RGB(0, 0, 255)
                            .WrapText = True
                            .Value = TextFecha.Value 'pongo el valor que quiero en la fila vacia
                            End With

Te adjunto mi codigo que busca la ultima linea con datos, le sumo 1 a esa linea ya que es la que no contiene nada, la selecciono y escribo,he comentado las lineas que necesitas, dejo lo demas para que lo entiendas o si puedes usarlo tambien para tu caso.

Respuesta
1

En la otra hoja, la columna que siempre contenga datos es la que se utiliza como referencia para encontrar la siguiente fila vacía.

En la macro tienes esta línea:

u = h2.Range("B" & Rows. Count).End(xlUp). Row + 1

en la macro la columna de referencia es la "B", pero si la "B" no siempre tiene datos entonces debes escoger cuál si tienes datos y cambiarla en la macro, por ejemplo, si la columna es la "C", entonces quedaría así:

u = h2.Range("C" & Rows.Count).End(xlUp).Row + 1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas