Corrección de código para filtrar datos e imprimir

Antes que nada agradezco todo el apoyo que se me ha brindado en este foro y he aprendido algunos trucos para las macros que he puesto en practica ahora si el código con el que me estoy topando con pared es el siguiente

Sub Imprimir()
'
Dim M As Long
Mirango = Range("C1").Select

' Imprimir Macro
'

'

M = Range(Range("AI2"), Range("AI2").End(xlDown)).Count
For Each nombre In Range("$AI$2:$AI$" & M)
Range("C1").Value = nombre.Value

ActiveSheet.Range("$C$18:$X$13501").AutoFilter Field:=1, Criterial:=Range(Mirango).Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Next
ActiveSheet.Range("$C$18:$AB$13501").AutoFilter Field:=1
End Sub

En este código pido que valla pasando el valor de AI2, a C1 y posteriormente que filtre el rango seleccionado pero al llegar a esa ultima instruccion me manda un error de tipo range de objeto global si le cambio la linea

ActiveSheet.Range("$C$18:$X$13501").AutoFilter Field:=1, Criterial:=Range("C1").Select

Me manda un error 1004 error definido por la aplicación o el objeto

Si modifico de esta otra manera

   ActiveSheet.Range("$C$18:$X$13501").AutoFilter Field:=1, Criterial:=Mirango.Select

Me manda un error 424 se requiere un objeto

Sin mas por el momento agradezco una vez mas el apoyo brindado

1 respuesta

Respuesta
1

Como para comenzar, esto:

Mirango = Range("C1").Select

Déjalo así:

Mirango = Range("C1").Value

Comentas

Abraham Valencia

me sigue dando el mismo error aun con la modificación de Select a Value te comparto la liga donde esta el archivo 

https://drive.google.com/open?id=141Y_U23lYU97N0KXeaNuuzh-tDxCVkhe 

espero me pueda orientar el por que del error

Tu macro "imprimir" ¿en cuál de todas las hojas debería trabajar?

Abraham Valencia

en la de caratula

No soy muy partidario de usar "Select" o "Selection" pero como para hacerlo simple y que lo puedas adaptar a tus necesidades de ser necesario

Sub Imprimir()
Dim UltimaFila1 As Long, UltimaFila2 As Long, Valor As Long
Dim Celda As Range
Let UltimaFila1 = Cells(Rows.Count, 35).End(xlUp).Row
Let UltimaFila2 = Cells(Rows.Count, 3).End(xlUp).Row
For Each Celda In Range("$AI$2:$AI$" & UltimaFila1)
    Let Valor = Celda.Value
    ActiveSheet.Range("$C$18:$X$" & UltimaFila2).AutoFilter Field:=1, Criteria1:="=" & Valor
    ActiveSheet.Range("$C$18:$X$" & UltimaFila2).SpecialCells(xlCellTypeVisible).Select
    Selection.PrintOut Copies:=1, Collate:=True
Next
ActiveSheet.Range("$C$18:$AB$13501").AutoFilter Field:=1
End Sub

Comentas

Abraham Valencia

¡Gracias!  me funciono aunque entonces como estaba estructurando el código no funcionara creo me intente fumar mucho el código ya le entendí muy bien a tu código (después de leerlo un par de veces) sigo insistiendo necesitare un buen curso de VBA y Excel

De nada estimado.

Mucha lectura y "ensayo y error" es lo mejor para aprender, tenías varias nociones adecuadas en lo que estabas haciendo, la idea la tenías, era solo mejorarla. Ah, y ojo, cuidado con algo que parece simple pero nos tira abajo las cosas: Los errores ortográficos en las instrucciones: Decía "Criterial" debía decir "Criteria1".

Un abrazo.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas