Página 1 de 1
Se a célula for vazia encerrar comando [2]
Enviado: 20 Jun 2020 às 19:20
por Pablo
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!!
Re: Se a célula for vazia encerrar comando [2]
Enviado: 21 Jun 2020 às 08:48
por babdallas
Veja se funciona:
Código: Selecionar todosPublic 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
Se a célula for vazia encerrar comando [2]
Enviado: 21 Jun 2020 às 11:38
por Pablo
Obrigado! Amanhã no trabalho vou testar =]
Pode me explicar o princípio que você usou?
Re: Se a célula for vazia encerrar comando [2]
Enviado: 21 Jun 2020 às 17:06
por babdallas
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.
Se a célula for vazia encerrar comando [2]
Enviado: 22 Jun 2020 às 21:54
por Pablo
Ótima sacada! Essa ideia do loop vai me ajudar em outros projetos!
Muito obrigado!!