Este es un ejemplo parecido a lo que buscas, al seleccionar un nombre de la lista lo busca en la hoja cliente y copia todos sus registros a la hoja encuesta, al dar click en copiar todos copia todos los registros de la hoja clientes a la hoja encuesta.
Este es el codigo
Private Sub ComboBox1_Change()
Set HC = Worksheets("CLIENTES")
Set HE = Worksheets("ENCUESTAS")
Set CLIENTES = Range("CLIENTES")
Set DESTINO = HE.Range("A2").CurrentRegion
With DESTINO
FILAS = .Rows.Count: COLUMNAS = .Columns.Count
HE.Range("A1").Resize(1, CLIENTES.Columns.Count).Value = CLIENTES.Rows(0).Value
End With
With CLIENTES
CLIENTE = ComboBox1.Value
CUENTA = WorksheetFunction.CountIf(.Columns(1), CLIENTE)
If CUENTA > 0 Then
FILA = WorksheetFunction.Match(CLIENTE, .Columns(1), 0)
Set REGISTROS = .Rows(FILA).Resize(CUENTA)
If FILAS = 1 And COLUMNAS = 1 Then
DESTINO.Resize(CUENTA, .Columns.Count).Value = REGISTROS.Value
Else
DESTINO.Rows(DESTINO.Rows.Count + 1).Resize(CUENTA, .Columns.Count).Value = REGISTROS.Value
End If
End If
End With
End Sub
Private Sub OptionButton1_Click()
Set HE = Worksheets("ENCUESTAS")
Set CLIENTES = Range("CLIENTES")
With CLIENTES
HE.Range("A2").Resize(.Rows.Count, .Columns.Count).Value = .Value
HE.Range("A1").Resize(1, .Columns.Count).Value = .Rows(0).Value
End With
End Sub
Private Sub UserForm_Activate()
With UserForm1
.Caption = "MODULO DE CLIENTES"
.Move 150, 15
End With
End Sub
Private Sub UserForm_Initialize()
Dim unicos As New Collection
Set HC = Worksheets("clientes")
Set DATOS = HC.Range("a1").CurrentRegion
With DATOS
.Sort key1:=HC.Range(.Columns(1).Address), order1:=xlAscending, Header:=xlYes
FILAS = .Rows.Count: COLUMNAS = .Columns.Count
For i = 2 To FILAS
CLIENTE = .Cells(i, 1)
On Error Resume Next
unicos.Add CLIENTE, CStr(CLIENTE)
If Err.Number = 0 Then ComboBox1.AddItem CLIENTE
On Error GoTo 0
Next i
Set DATOS = .Rows(2).Resize(FILAS - 1, COLUMNAS)
.Name = "CLIENTES"
End With
End Sub