Hola tengo un libro con dos campos Nit y cliente y otros libros con los mismos campos Nit y cliente, necesito que cada vez que se llene estos datos en cualquiera de los libros, se alimente esos dos campos en el primer libro
La siguiente rutina... Copia de la posición donde este del libro 1 a otro libro en la hoja donde estaba cuando lo cerraron, colocando la copia en el siguiente renglón. Espero te sirva... Sub Selecciona_Dato_copialo() Dim Localiza As Variant Dim posicion As Variant Dim Renglon As Variant 'Activa tu olibro original. ThisWorkbook.Activate 'Selecciona la celda activa. ActiveCell.Select 'localiza en que línea estas Localiza = ActiveCell.Address posicion = InStr(2, Localiza, "$") If posicion > 0 Then Renglon = Mid(Localiza, posicion + 1) Range("A" & CStr(Renglon) & ":B" & CStr(Renglon)).Select Selection.Copy 'Colocar el path de los archivos ChDir "C:\Documents and Settings\peguocmx\Escritorio\TodoExpertos\Villad" 'Aqui se coloca el nombre del arhcivo donde se va a abrir el archivo No. 2 Workbooks.Open Filename:= _ "C:\Documents and Settings\peguocmx\Escritorio\TodoExpertos\Villad\Libro2.xls" 'Abriendo en donde va la hoja. Range("A1").Select Selection.End(xlDown).Select Localiza = ActiveCell.Address posicion = InStr(2, Localiza, "$") Renglon = Mid(Localiza, posicion + 1) If Renglon = 65536 Then Selection.End(xlUp).Select Localiza = ActiveCell.Address posicion = InStr(2, Localiza, "$") Renglon = Mid(Localiza, posicion + 1) Else Localiza = ActiveCell.Address posicion = InStr(2, Localiza, "$") Renglon = Mid(Localiza, posicion + 1) End If Range("A" & CStr(Renglon + 1)).Select ActiveSheet.Paste Application.CutCopyMode = False 'Guadarando los cambios ActiveWorkbook.Save 'Cerrando el libro destino ActiveWorkbook.Close End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 6 Or Target.Row < 15 Or Target.Row > 25 Or Range("H" & Target.Row) = "Pasado" Then Exit Sub ' Si la celda que has modificado está fuera del rango F15:F25 o el rango Hxx es igual a pasado sal de la macro Dim Fila As Integer If Target.Text = "Cerrado" Then ' si el texto de la celda modificada es "Cerrado" Fila = Target.Row ' la variable FILA va ha valer el número de fila modificado Range("e" & Fila & ":f" & Fila).Copy 'copia el rango E:F de la fila de la celda modificada Sheets(2).Select ' selecciona la hoja 2 Range("a1").Select ' selecciona el rango A1 Selection.End(xlDown).Select ' Se va a la ultima fila con datos ActiveCell.Offset(1, 0).Select ' pasa a la siguiente celda ActiveSheet.Paste ' Pega los datos copiados Application.CutCopyMode = False Sheets(1).Range("H" & Fila) = "Pasado" End If Este código debes de ponerlo en las hojas donde sueles poner los datos, te he puesto una celda más Hxx que te indicaría si esa fila ya ha sido pasada a la hoja nueva, con lo cual no se volverá a pasar si por descuido se modifica, modificatelo a los rangos y hojas/libros que tu tengas. Creo que es esto lo que quieres, si no coméntamelo un saludo