Macros para copiar datos con criterio entre libros

Señores:
Quiero copiar los datos ubicados en forma aleatoria en el rango A:E de la hoja N° 4 a la hoja N° 3 cumpliendo con la condicición dada por la frase "Programar Compra" en la columna seleccionada a partir del combobox N° 1, la macro actualmente solo me trae los datos de la fila N° 2 quiero que busque en todas las filas que tengan datos.
Parte A:
Private Sub CommandButton1_Click()
columna = ComboBox1.ListIndex + 1
'seleccionamos la celda que proceda,
'a partir de la segunda fila
Cells(2, columna).Select
'vamos a llenar dinámicamente el combobox
'dependiendo del país elegido
Do While Not IsEmpty(ActiveCell)
If ActiveCell.Value = "ProgramarCompra" Then
b = ActiveCell.Row
Cells(b, 1).Select
dato1 = ActiveCell.Offset(0, 0).Value
dato2 = ActiveCell.Offset(0, 1).Value
dato3 = ActiveCell.Offset(0, 2).Value
dato4 = ActiveCell.Offset(0, 3).Value
dato5 = ActiveCell.Offset(0, 4).Value
dato6 = ActiveCell.Offset(0, 5).Value
dato7 = ActiveCell.Offset(0, 6).Value
Worksheets("Informes").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Offset(0, 0).Value = dato1
ActiveCell.Offset(0, 1).Value = dato2
ActiveCell.Offset(0, 2).Value = dato3
ActiveCell.Offset(0, 3).Value = dato4
ActiveCell.Offset(0, 4).Value = dato5
ActiveCell.Offset(0, 5).Value = dato6
ActiveCell.Offset(0, 6).Value = dato7
End If
Worksheets("ComprasMP").Select
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Parte B:
Private Sub UserForm_Initialize()
'Al inciar el formulario,
'seleccionamos la hoja con los datos
Hoja4.Select
'Seleccionamos la celda A1
Range("A1").Select
'Hasta que no encuentre una columna vacía
'que llene todo con datos
Do While ActiveCell <> Empty
ComboBox1.AddItem ActiveCell.Value
'nos desplazamos una columna a la derecha
ActiveCell.Offset(0, 1).Select
Loop
End Sub
Parte C:
Private Sub ComboBox1_Change()
Hoja4.Select
'miramos lo que hay seleccionado en el combobox1
'Listindex + 1 nos devuelve la columna del país,
'porque el listindex empieza siempre por cero
columna = ComboBox1.ListIndex + 1
End Sub

Añade tu respuesta

Haz clic para o