Ayuda con la siguiente macro...

Estoy elaborando un libro de salarios, y he estado investigando como automatizar el trabajo a través de macro. He encontrado esta macro, pero me da error 1004.

Lo que quiero hacer es lo siguiente: tengo varias hojas en un mismo libro que contienen nominas de salarios para diferentes empleados, y quiero que la macro busque al empleado que yo indique en todas las hojas, que copie la información de toda la fila y luego la pegue en un formato que ya tengo establecido, pero que revise si la fila ya esta llena pase a la siguiente fila y pegue la información.

Esta es la macro:

Sub Libro_de_Salarios()

Dim Empleado As String
Worksheets("Formato").Select
Application.ScreenUpdating = False
'
'
ActiveSheet.Cells.Clear
Empleado = InputBox("Nombre del Empleado : ")
For i = 1 To Sheets.Count
Select Case Sheets(i).Name
Case "control"
'esta hoja no se procesa
Case "otrahoja"
'esta hoja no se procesa
Case Else
hoja = Worksheets(i).Name
Worksheets(hoja).Select
Columns("A3:P80").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:=fecha, Operator:=xlAnd
Range("A1:P1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Formato").Select
ufila = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & ufila + 1).Select
ActiveSheet.Paste
End Select

Bueno, es solo la primera parte.

1 Respuesta

Respuesta
2

Te anexo otra macro.

Sub Libro_de_Salarios()
'Por.Dante Amor
    '
    Application.ScreenUpdating = False
    Set h1 = Sheets("Formato")
    h1.Cells.Clear
    '
    Empleado = InputBox("Nombre del Empleado : ")
    If Empleado = "" Then Exit Sub
    For Each h2 In Sheets
        Select Case h2.Name
            Case "formato" 'esta hoja no se procesa
            Case "otrahoja" 'esta hoja no se procesa
            Case Else
                u1 = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
                u2 = h2.UsedRange.SpecialCells(11).Row
                h2.Range("A1:P" & u2).AutoFilter Field:=1, Criteria1:=Empleado
                If h2.Range("A" & Rows.Count).End(xlUp).Row > 1 Then _
                h2.Range("A2", h2.[A2].SpecialCells(11)).SpecialCells(xlCellTypeVisible).Copy _
                h1.Range("A" & u1)
        End Select
    Next
End Sub

La hoja donde vas a poner los datos del empleado se debe llamar "formato".

Estoy suponiendo que los datos de todas las hojas empiezan en la fila 2.

También estoy suponiendo que el empleado se localiza en la columna A en todas las hojas.

Si los datos son diferentes, entonces tendrás que decirme exactamente en dónde están tus datos.

Muchas gracias, creo que si es lo que necesito... pero necesito ajustarlo al formato. Trate de hacerlo pero no lo logre... como puedo enviártelo para que me orientes en como hacerlo...

Trate de hacer otra macro, pero igual no me funciono.

Envíame tu archivo con lo siguiente:

1. Una hoja llamada "formato" con el formato que necesitas.

2. Dos hojas con las nominas "hojanom1" y "hojanom2", aquí pueden venir con el nombre real de las hojas.

3. Una hoja llamada "muestra" con el formato lleno con ejemplos que vienen en las hojas "hojanom1" y "hojanom2". En esta hoja me muestras con un color la información que pasaste de la hojanom1 y con otro color la información que pasaste de la hojanom2.

En total 4 hojas.

Gracias por la ayuda, ya te lo envié al correo...

Esta es la macro

Sub llenar()
'Por.Dante Amor
    '
    Application.ScreenUpdating = False
    Set h1 = Sheets("Formato")
    h1.Range("C16:T39").ClearContents
    '
    j = 16
    For Each h2 In Sheets
        Select Case h2.Name
            Case "formato", "muestra"
            Case Else
                Set b = h2.Columns("A").Find(h1.[C5], lookat:=xlWhole)
                If Not b Is Nothing Then
                    h2.Range("C" & b.Row & ":T" & b.Row).Copy
                    h1.Cells(j, "C").PasteSpecial Paste:=xlValues
                    j = j + 1
                End If
        End Select
    Next
    MsgBox "fin"
End Sub

Te envié el archivo con la macro.

Saludos. Dante Amor

Recuerda valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas