Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
Por Pablo
Posts
#56249
Olá pessoal,

Vamos a situação, tenho uma planilha que é uma lista de presença que é necessário imprimir várias abas, mas todas tem em comum algumas informações.

Estou criando um comando para imprimir todas essas abas de uma só vez para cada dia da semana, até aí ok. Onde o principio é se a célula correspondendo ao dia estiver preenchida ele imprime, se não ele deve encerrar o comando.
Quando estão todos preenchidos e ele não precisa parar o comando antes do fim vai tranquilo, agora quando tem uma célula vazia e precisa encerrar o comando está dando erro.

Deixo a planilha em anexo para vocês visualizarem o que eu estou dizendo.

Obrigado!!
Você não está autorizado a ver ou baixar esse anexo.
#56252
Veja se funciona:
Código: Selecionar todos
Public Sub Imprimir_17jun()
    Dim lngLin      As Long
    
    With wshFicha
        For lngLin = 4 To 8
            If wshImprimir.Cells(lngLin, 2).Value2 = "" Then Exit Sub
            
            .Range("S6:Z6").FormulaR1C1 = "=Imprimir!R[" & lngLin - 6 & "]C[-17]"
            .Range("D7:I7").FormulaR1C1 = "=Imprimir!R[" & lngLin - 7 & "]C[-1]"
            .Range("I13:AB35").FormulaR1C1 = "=Imprimir!R[" & lngLin - 13 & "]C[-5]"
            
            Imprimir
        Next lngLin
    End With
End Sub

Private Sub Imprimir()
    wshFicha.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    wshFicha2.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    wshFicha3.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    wshFicha4.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    wshFicha5.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
    wshFichaEsc.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
End Sub
Você não está autorizado a ver ou baixar esse anexo.
#56256
Seu código tinha a seguinte estrutura:

1) Verifica da linha 4 até a linha 8 se a célula era vazia. Se sim, saia da subrotina. Desta forma, substitui estas 5 verificações por um loop (for next) da linha 4 até a linha 8.
2) Dentro do loop, verifica se as células das linhas 4 a 8 da planilha Imprimir estão vazias. Se sim, sai da subrotina. Se não, continua o código abaixo.
3) Após, você tinha basicamente três grupos de intervalos de células a quais você atribuia fórmulas diferentes a cada uma. Notei que a cada linha, a fórmula também mudava sempre em uma linha abaixo. Sendo assim, verifiquei que havia um padrão e consegui fazer uma fórmula que depende da linha do loop (de 4 a 8).
4) Depois, você fazia a impressão das várias ficas. Juntei tudo isso em uma subrotina só que chamei de Imprimir. Então, chamei esta subrotina Imprimir na subrotina principal a cada linha do loop.

Não sei se ficou claro, mas foi este raciocínio que usei.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord