Código en Visual basic, ¿Imprimir hojas según celda?
Tengo un código en Visual basic para que, si en determinadas celdas se cumple una condición, me muestre/oculte hojas.
Por ejemplo, en la celda "G56", si el valor es igual a "si", que muestre la hoja "X". Así, tengo otras 2 hojas vinculadas a las celdas G55 y G60.
Lo que no logro hacer es que me imprima las hojas que estén visibles, por ejemplo: Si "X" y "Z" están visibles pero "Y" no, que imprima POR y Z; si únicamente está visible "Z", que imprima solo Z.
No puedo imprimir todo el libro, porque existen hojas que previamente se han impreso o no es necesario imprimirlas.
Había hecho tres módulos (imprimir3, imprimir3 e imprimir5); uno para que verificara el valor de cada hoja, de ser cierta la condición, la seleccionara y luego la imprimiera. Sin embargo, únicamente funcionada "imprimir3", o sea, imprimía únicamente 1 hoja de las 3 mostradas (en el supuesto de que la condición se cumpliera y mostrara las 3 hojas).
Ahora, estoy intentando hacer la validación en un solo módulo, pero ahora no imprime ni siquiera una hoja:
Sub imprimir3()
If Range("g56") = "si" Then
Worksheets(Array("Ixcanil")).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1
If Range("g55") = "si" Then
Worksheets(Array("Promerica")).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1
If Range("g60") = "si" Then
Worksheets(Array("Bantrab")).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1
End If
End If
End If
End Sub
Los nombres de las hojas están en el módulo: Ixcanil, Promerica y Bantrab.
Por ejemplo, en la celda "G56", si el valor es igual a "si", que muestre la hoja "X". Así, tengo otras 2 hojas vinculadas a las celdas G55 y G60.
Lo que no logro hacer es que me imprima las hojas que estén visibles, por ejemplo: Si "X" y "Z" están visibles pero "Y" no, que imprima POR y Z; si únicamente está visible "Z", que imprima solo Z.
No puedo imprimir todo el libro, porque existen hojas que previamente se han impreso o no es necesario imprimirlas.
Había hecho tres módulos (imprimir3, imprimir3 e imprimir5); uno para que verificara el valor de cada hoja, de ser cierta la condición, la seleccionara y luego la imprimiera. Sin embargo, únicamente funcionada "imprimir3", o sea, imprimía únicamente 1 hoja de las 3 mostradas (en el supuesto de que la condición se cumpliera y mostrara las 3 hojas).
Ahora, estoy intentando hacer la validación en un solo módulo, pero ahora no imprime ni siquiera una hoja:
Sub imprimir3()
If Range("g56") = "si" Then
Worksheets(Array("Ixcanil")).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1
If Range("g55") = "si" Then
Worksheets(Array("Promerica")).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1
If Range("g60") = "si" Then
Worksheets(Array("Bantrab")).Select
ActiveWindow.SelectedSheets.PrintOut copies:=1
End If
End If
End If
End Sub
Los nombres de las hojas están en el módulo: Ixcanil, Promerica y Bantrab.
1 Respuesta
Respuesta de Eduard Caballero
1