Mejorar la macro de buscar un dato en otra hoja y copiarlo en una tercera
Te quiero pedir que me ayudes a mejorar la macro y analizar porque se incrementa tanto el tamaño del archivo haciéndolo que se ralentice su visualización.
El código no funciono ya que solo arranca y se queda con el resultado del primer registro (cosa bien curiosa, si en el archivo anterior si funciona), para lo cual un experto me dio un código mejorado.
Me surgieron varios interrogantes al verlo funcionar
En las siguientes lineas de código:
Se declara las variables donde van a estar las filas a partir donde están los datos de cada hoja
Set Personal = h2.Range("A5").CurrentRegion
Set Novedades = h3.Range("A6").CurrentRegion
Set Nomina = h4.Range("A10").CurrentRegion
Y se declaran unas constantes:
r = .Rows.Count
x = 1 que me toco cambiarla x 5 para que arrancará en la fila que es de la hoja nómina
For i = 1 To r
dato = .Cells(i, 1)
For j = 1 To Personal.Rows.Count la constante j=1 la cambie x j=2 para que no tomara la cabecerá de los datos de la hoja novedades.
Los códigos completos son:
'CODIGO INICIAL QUE DEJO DE FUNCIONAR EN EL NUEVO LIBRO Sub BuscarEmp() Application.ScreenUpdating = False Dim hnov, hpnal, hnom As Integer hnov = 6 hpnal = 5 hnom = 10 On Error Resume Next While Sheets("Novedades").Cells(hnov, 1) <> Empty While Sheets("Personal").Cells(hpnal, 1) <> Empty dato1 = Sheets("Novedades").Cells(hnov, 1) dato2 = Sheets("Personal").Cells(hpnal, 1) If Sheets("Novedades").Cells(hnov, 1) = Sheets("Personal").Cells(hpnal, 1) Then Sheets("Nomina").Cells(hnom, 2) = Sheets("Personal"). Cells(hpnal, 1) Sheets("Nomina").Cells(hnom, 3) = Sheets("Personal"). Cells(hpnal, 8) Sheets("Nomina").Cells(hnom, 4) = Sheets("Personal"). Cells(hpnal, 9) Sheets("Nomina").Cells(hnom, 5) = Sheets("Personal"). Cells(hpnal, 10) Sheets("Nomina").Cells(hnom, 6) = Sheets("Personal"). Cells(hpnal, 11) Sheets("Nomina").Cells(hnom, 7) = Sheets("Personal"). Cells(hpnal, 12) Sheets("Nomina").Cells(hnom, 8) = Sheets("Personal"). Cells(hpnal, 13) Sheets("Nomina").Cells(hnom, 9) = Sheets("Personal"). Cells(hpnal, 7) Sheets("Nomina").Cells(hnom, 10) = Sheets("Personal"). Cells(hpnal, 24) Sheets("Nomina").Cells(hnom, 11) = Sheets("Personal"). Cells(hpnal, 25) Sheets("Nomina").Cells(hnom, 12) = Sheets("Personal"). Cells(hpnal, 26) Sheets("Nomina").Cells(hnom, 13) = Sheets("Personal"). Cells(hpnal, 27) Sheets("Nomina").Cells(hnom, 14) = Sheets("Personal"). Cells(hpnal, 15) Sheets("Nomina").Cells(hnom, 33) = Sheets("Personal"). Cells(hpnal, 23) Sheets("Nomina").Cells(hnom, 15) = Sheets("Novedades"). Cells(hnov, 3) Sheets("Nomina").Cells(hnom, 16) = Sheets("Novedades"). Cells(hnov, 4) Sheets("Nomina").Cells(hnom, 20) = Sheets("Novedades"). Cells(hnov, 5) Sheets("Nomina").Cells(hnom, 26) = Sheets("Novedades"). Cells(hnov, 6) Sheets("Nomina").Cells(hnom, 27) = Sheets("Novedades"). Cells(hnov, 7) Sheets("Nomina").Cells(hnom, 32) = Sheets("Novedades"). Cells(hnov, 8) hnom = hnom + 1 End If hpnal = hpnal + 1 Wend hnov = hnov + 1 hpnal = 2 Wend Application.ScreenUpdating = True End Sub