Hacer Formulario entrada para copiar filas a Hoja2

Voy a intentar explicar mi problema a ver si me podéis ayudar, gracias .

Tengo un libro con 2 hojas, en la primera tengo los datos con los que quiero trabajar que es desde la fila A hasta BL1000, y la segunda es para que me copie los datos del filtrado que haga a través del formulario.

Lo que quiero es hacer un formulario donde le pueda meter 4 divisiones Ejemplo : 001 002 003 004 y que una vez le haya metido los datos al formulario, valla a la Hoja1 y cuando encuentre esos valores en la columna A me copie la fila completa a la Hoja2 a partir de A6.

1

1 Respuesta

975 pts. Nuestra Especialidad Microsoft Excel

Usa este código para realizar el copiado de los registros que sean identicos a los parámetros digitados en el formulario.

Private Sub Btn_CopiarRegistros_Click()

Dim Valor As String
Dim CanReg As String
Dim CanRegH2 As String

Valor = UserForm1.Txt_VARIABLEaCOPIAR.Value 'Valor a filtrar en Hoja 1 para ser copiado a Hoja2
CanReg = Application.WorksheetFunction.CountA(Hoja1.Range("a:a")) 'Cantidad de registros en Hoja 1
CanRegH2 = Hoja2. Range("C4").Value 'En este rango hay formula que cuenta cantidad de registros en hoja 2 para definir donde copiamos los registros

Application.ScreenUpdating = False 'Se usa para no mostrar la ejecución de la MACRO
For i = 1 To CanReg
If Hoja1.Cells(i, 1).Value = Valor Then 'Valido que sea igual al valor digitado en el formulario para ser copiado
Hoja1.Rows(i).Copy
Sheets("Hoja2").Select
CanRegH2 = Hoja2.Range("C4").Value 'Vuelto a llenar esta variable ya que se tienen registros nuevos
Range("A" + LTrim(CanRegH2)).Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End If
Next i
Application.ScreenUpdating = True
UserForm1.Hide
MsgBox "Termino el proceso de copiado", vbInformation, "http://solutionsintegrar.jimdo.com"
Hoja2.Range("a1").Select
End Sub

Te dejo en ese link el archivo del ejemplo para que lo puedas descargar. https://mega.co.nz/#!001HkQYK!4DB_e9IJvMnYOIervUWulRGCNa4ARO7dFhzsp3yl16I 

Buenas, Julio. Buena solución, ¿si quisiera hacer esa consulta con varios registros al mismo tiempo como podría hacerlo?

Es decir, imaginate que quiero sacar el registro 1,2,4 en la misma consulta.

Gracias de antemano por el esfuerzo

Vas agregar al formulario dos TextBox y el siguiente código al botón Copiar del formulario.

Private Sub Btn_CopiarRegistros_Click()
Dim Valor As String
Dim Valor1 As String
Dim Valor2 As String
Dim CanReg As String
Dim CanRegH2 As String
Valor = UserForm1.Txt_VARIABLEaCOPIAR.Value 'Valor a filtrar en Hoja 1 para ser copiado a Hoja2
Valor1 = UserForm1.Txt_VARIABLEaCOPIAR1.Value
Valor2 = UserForm1.Txt_VARIABLEaCOPIAR2.Value
CanReg = Application.WorksheetFunction.CountA(Hoja1.Range("a:a")) 'Cantidad de registros en Hoja 1
CanRegH2 = Hoja2.Range("C4").Value 'En este rango hay formula que cuenta cantidad de registros en hoja 2 para definir donde copiamos los registros
Application.ScreenUpdating = False 'Se usa para no mostrar la ejecución de la MACRO
For i = 1 To CanReg
    If Hoja1.Cells(i, 1).Value = Valor Or Hoja1.Cells(i, 1).Value = Valor1 Or Hoja1.Cells(i, 1).Value = Valor2 Then 'Valido que sea igual al valor digitado en el formulario para ser copiado
        Hoja1.Rows(i).Copy
        Sheets("Hoja2").Select
        CanRegH2 = Hoja2.Range("C4").Value 'Vuelto a llenar esta variable ya que se tienen registros nuevos
        Range("A" + LTrim(CanRegH2)).Select
        Selection.PasteSpecial Paste:=xlPasteValues
        Application.CutCopyMode = False
    End If
Next i
Application.ScreenUpdating = True
UserForm1.Hide
MsgBox "Termino el proceso de copiado", vbInformation, "http://solutionsintegrar.jimdo.com"
Hoja2.Range("a1").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas