Como solucionar el error 1004 en una macro

Pata dante:

Estimado, tengo la macro que me creaste para consolidar cantidades con dos criterios "SMAYOR", "SMENOR", cuando mi base de datos tiene ambos criterios, la macro me funciona bien, pero cuando tengo un archivo solo unos de los dos, por ejemplo solo SMENOR sale error 1004. Y viceversa si solo tendria SMAYOR.

¿Cómo se podría hacer para que no salga ese error, teniendo en cuenta que no todos mis archivos van a tener siempre esos dos criterios?

Archivo

1 respuesta

Respuesta
1

El problema es porque no estás poniendo una categoría que exista. Tal vez estás poniendo un espacio o una letra demás.

Utiliza la siguiente macro, verifica si existe el cliente y la categoría, si no existen te envía un mensaje, si existe realiza el filtro. Si no hay información, la hoja estará vacía.

Sub Consolidar()
'Por.Dante Amor
'
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set h1 = Sheets("Ruteo")
    Set h2 = Sheets("Consolidado")
    Set h3 = Sheets("Hoja1")
    h3.Cells.Clear
    u2 = h2.Range("A" & Rows.Count).End(xlUp).Row
    If u2 < 5 Then u2 = 5
    h2.Range("A5:C" & u2).ClearContents
    If h1.AutoFilterMode Then h1.AutoFilterMode = False
    cliente = h2.[B1]
    catego = h2.[B2]
    Set b = h1.Columns("H").Find(cliente, lookat:=xlWhole)
    If b Is Nothing Then
        MsgBox "El cliente no existe"
        Exit Sub
    End If
    Set b = h1.Columns("G").Find(catego, lookat:=xlWhole)
    If b Is Nothing Then
        MsgBox "La categoría no existe"
        Exit Sub
    End If
    '
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        h1.Name & "!R1C1:R" & u1 & "C18", Version:=xlPivotTableVersion12).CreatePivotTable _
        TableDestination:="Hoja1!R1C1", TableName:="Tabla dinámica4", _
        DefaultVersion:=xlPivotTableVersion12
    With h3.PivotTables("Tabla dinámica4").PivotFields("Cliente")
        .Orientation = xlPageField
        .Position = 1
    End With
    With h3.PivotTables("Tabla dinámica4").PivotFields("Categoria")
        .Orientation = xlPageField
        .Position = 1
    End With
    With h3.PivotTables("Tabla dinámica4").PivotFields("Codigo")
        .Orientation = xlRowField
        .Position = 1
    End With
    With h3.PivotTables("Tabla dinámica4").PivotFields("Descripcion")
        .Orientation = xlRowField
        .Position = 2
    End With
    h3.PivotTables("Tabla dinámica4").AddDataField h3.PivotTables _
        ("Tabla dinámica4").PivotFields("Cant"), "Suma de Cant", xlSum
    With h3.PivotTables("Tabla dinámica4")
        .InGridDropZones = True
        .RowAxisLayout xlTabularRow
    End With
    h3.PivotTables("Tabla dinámica4").PivotFields("Codigo").Subtotals = _
        Array(False, False, False, False, False, False, False, False, False, False, False, False)
    H3. PivotTables("Tabla dinámica4"). PivotFields("Cliente"). _
        ClearAllFilters
    H3. PivotTables("Tabla dinámica4"). PivotFields("Cliente").CurrentPage _
        = cliente
    H3. PivotTables("Tabla dinámica4"). PivotFields("Categoria"). _
        ClearAllFilters
    H3. PivotTables("Tabla dinámica4"). PivotFields("Categoria"). _
        CurrentPage = catego
    u3 = h3.Range("A" & Rows.Count).End(xlUp).Row
    H3.Range("A6:C" & u3). Copy
    H2. Range("A5"). PasteSpecial xlValue
    Application.ScreenUpdating = True
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas