Página 1 de 1

[RESOLVIDO!] - Definir área de impressão conforme valor de célula

Enviado: 05 Set 2021 às 15:13
por eduardobatistaadm
Boa Tarde!

Tenho uma planilha que dependendo dos valores da célula W15 (Valor de 1 a 15), são ocultadas algumas linhas.

Gostaria de definir, também, a área de impressão com base no valor da Célula W15.

A lógica seria assim:
W15 = 1 [PageSetup.PrintArea = "$A$1:$AF$55"]
W15 = 2 [PageSetup.PrintArea = "$A$1:$AF$55" & "$A$56:$AF$110"]
W15 = 3 [PageSetup.PrintArea = "$A$1:$AF$55" & "$A$56:$AF$110" & "$A$111:$A$165"]
W15 = 4 [PageSetup.PrintArea = "$A$1:$AF$55" & "$A$56:$AF$110" & "$A$111:$A$165" & "$A$166:$AF$220"]

Ou seja, a medida que o valor de W15 aumenta 1 número é adicionada, a partir da linhas seguinte, nova pagina com 55 linhas.

A última área (15ª Página) adicionada, se W15 = 15, seria $A$771:$AF$824.
Código: Selecionar todos
Sub Dropdown1_Alteração()
'Número de Participantes

        If Range("W15") = 1 Then
            Range("A18:A20").EntireRow.Hidden = False
            Range("A21:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A56:A824").EntireRow.Hidden = True
                    Range("A1:A55").EntireRow.Hidden = False
                   'ActiveSheet.PageSetup.PrintArea = "$A$1:$AF$55"
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 2 Then
            Range("A18:A23").EntireRow.Hidden = False
            Range("A24:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A111:A824").EntireRow.Hidden = True
                    Range("A1:A110").EntireRow.Hidden = False
                    PageSetup.PrintArea = "$A$1:$AF$55" & "$A$56:$AF$110"
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 3 Then
            Range("A18:A26").EntireRow.Hidden = False
            Range("A27:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A166:A824").EntireRow.Hidden = True
                    Range("A1:A165").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 4 Then
            Range("A18:A29").EntireRow.Hidden = False
            Range("A30:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A221:A824").EntireRow.Hidden = True
                    Range("A1:A1220").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 5 Then
            Range("A18:A32").EntireRow.Hidden = False
            Range("A33:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A276:A824").EntireRow.Hidden = True
                    Range("A1:A275").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 6 Then
            Range("A18:A35").EntireRow.Hidden = False
            Range("A36:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A331:A824").EntireRow.Hidden = True
                    Range("A1:A330").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 7 Then
            Range("A18:A38").EntireRow.Hidden = False
            Range("A39:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A386:A824").EntireRow.Hidden = True
                    Range("A1:A385").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 8 Then
            Range("A18:A41").EntireRow.Hidden = False
            Range("A42:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A441:A824").EntireRow.Hidden = True
                    Range("A1:A440").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 9 Then
            Range("A18:A44").EntireRow.Hidden = False
            Range("A45:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A496:A824").EntireRow.Hidden = True
                    Range("A1:A495").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 10 Then
            Range("A18:A47").EntireRow.Hidden = False
            Range("A48:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A551:A824").EntireRow.Hidden = True
                    Range("A1:A550").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 11 Then
            Range("A18:A50").EntireRow.Hidden = False
            Range("A51:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A606:A824").EntireRow.Hidden = True
                    Range("A1:A605").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 12 Then
            Range("A18:A53").EntireRow.Hidden = False
            Range("A54:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A661:A824").EntireRow.Hidden = True
                    Range("A1:A660").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 13 Then
            Range("A18:A56").EntireRow.Hidden = False
            Range("A57:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A716:A824").EntireRow.Hidden = True
                    Range("A1:A715").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 14 Then
            Range("A18:A59").EntireRow.Hidden = False
            Range("A60:A62").EntireRow.Hidden = True
                Worksheets("7-SOCIOS").Select
                    Range("A771:A824").EntireRow.Hidden = True
                    Range("A1:A770").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        ElseIf Range("W15") = 15 Then
            Range("A18:A62").EntireRow.Hidden = False
                Worksheets("7-SOCIOS").Select
                Range("A1:A824").EntireRow.Hidden = False
                Worksheets("ENTRADA").Select
        End If

End Sub
Agradeço a quem puder me ajudar!

Re: Definir área de impressão conforme valor de célula

Enviado: 05 Set 2021 às 17:27
por osvaldomp
Olá, @eduardobatistaadm .

Experimente:
Código: Selecionar todos
ActiveSheet.PageSetup.PrintArea = "$A$1:$AF$" & [W15] * 55

Re: Definir área de impressão conforme valor de célula

Enviado: 05 Set 2021 às 22:53
por eduardobatistaadm
@osvaldomp Testei aqui...tava gerando 900 e poucas paginas (acho que precisaria especificar no código a worksheets que estou fazendo referencia), mas ao excluir todas as abas e deixar somente a que estou trabalhando rodou...
No entanto, gerou 16 páginas ao invés de 15. Vou anexar aqui para você dá uma olha no que pode ser (caso tenha disponibilidade).

Grato!

Re: Definir área de impressão conforme valor de célula

Enviado: 06 Set 2021 às 08:38
por osvaldomp
[quote=eduardobatistaadm post_id=66790 time=1630893215 user_id=19352
(acho que precisaria especificar no código a worksheets que estou fazendo referencia), ...
Sim, se você faz uma referência a uma ou mais células e não coloca a referência à planilha, então o código entende que você está se referindo à planilha ativa.


No entanto, gerou 16 páginas ao invés de 15.
A expressão que passei retorna a área de impressão exatamente como você pediu. A quantidade de páginas resultantes será consequência da altura das linhas na área de impressão e do ajuste das margens. Verifique aí.
[/quote]

Re: Definir área de impressão conforme valor de célula

Enviado: 06 Set 2021 às 20:30
por eduardobatistaadm
@osvaldomp deu certo!

Eu tinha colocado o "55" no final do intervalo, dessa forma (ActiveSheet.PageSetup.PrintArea = "$A$1:$AF$55" & [W15] * 55). Por isso, inicialmente estava dando 900 e poucas páginas.
Descobrir usando o Debug.Print onde havia errado.

Seu código estava completamente correto.

Muito obrigado!