Página 1 de 1

Printout 3 sheets com condiçoes VBA

Enviado: 29 Mar 2022 às 19:38
por ICEFROG
Boas, basicamente o codigo e o seguinte, vai verificar se alguma destas celulas ("A4", "B4", "C4", "D4", "E11", "F11", "J11", "H11") contem o numero 5, se alguma conter 5, vai imprimir. isto são 3 planilhas cada uma tem o botao para fazer print individual, So que tenho um botão para imprimir as 3 de uma vez, so que não esta a respeitar as condiçoes da IMPRIMIR_1(2)(3), que quando e individual funciona perfeitamente, no single botão vai imprimir todas sem respeitar condição.
Código: Selecionar todos
Private Sub IMPRIMIR_1()
'D4 F4 H4 J4 D11 F11 H11 J11

Dim vArray, vEntry, bPrint As Boolean
vArray = Array("A4", "B4", "C4", "D4", "E11", "F11", "J11", "H11")

For Each vEntry In vArray
    If Range(vEntry) = 5 Then
        bPrint = True
        Exit Sub
    End If
Next vEntry

Application.ScreenUpdating = False

With Sheets("sheet1")
    If bPrint Then
        .Visible = True
        .PrintOut Copies:=1, Collate:=True
        .Visible = xlSheetVeryHidden
    End If
End With

Application.ScreenUpdating = True
Código: Selecionar todos
Sub IMPRIMIR_OS_3()
    Call IMPRIMIR_3
    Call IMPRIMIR_2
    Call IMPRIMIR_1
End Sub

Re: Printout 3 sheets com condiçoes VBA

Enviado: 29 Mar 2022 às 23:25
por osvaldomp
Experimente:
Código: Selecionar todos
Sub ImprimePlans()
 Dim Sht As Worksheet, c As Range, k As Long
  Application.ScreenUpdating = False
  For Each Sht In Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
   For Each c In Sht.Range("D4,F4,H4,J4,D11,F11,H11,J11")
    If c.Value = 5 Then k = 1: Exit For
   Next c
   If k = 1 Then
    Sht.Visible = True
    Sht.PrintOut Copies:=1, Collate:=True
    Sht.Visible = xlSheetVeryHidden
    k=0
   End If
  Next Sht
End Sub

Re: Printout 3 sheets com condiçoes VBA

Enviado: 30 Mar 2022 às 05:51
por ICEFROG
Tentei, mas nada aconteceu. isto e para ficar no imprimir os 3?, tentei no single tambem nada.

Re: Printout 3 sheets com condiçoes VBA

Enviado: 30 Mar 2022 às 07:01
por osvaldomp
O código irá verificar as planilhas Sheet1, Sheet2 e Sheet3, e se ao menos uma das células relacionadas no código for igual a 5 então a planilha será impressa.

Antes de rodar o código, ajuste nele os nomes das planilhas e os endereços das células relacionadas.

Editei o código e acrescentei "k=o". Faça os testes e se não conseguir o resultado então disponibilize uma amostra do seu arquivo Excel com o código instalado.

Re: Printout 3 sheets com condiçoes VBA

Enviado: 31 Mar 2022 às 21:15
por ICEFROG
Boas desculpa a demora apenas hoje tive acesso ao PC, tive de fazer um ficheiro novo, bem parecido como o meu original :lol: .

Acho que eu fiz confusão na explicaçao porque meu ficheiro tem 3 corpos para ser preenchido, cada corpo representa uma impressão diferente acho que agora da para ter uma melhor ideia.

Re: Printout 3 sheets com condiçoes VBA

Enviado: 01 Abr 2022 às 08:46
por osvaldomp
"Ao pressionar o botão que vai imprimir "impressão 1 2 e 3" devem respectividade respeitar, por exemplo se sheet1 estiver vazio "D4", "F4", "H4", "J4", "D11", "F11", "H11", "J11", vai imprimir sheet 2 e 3, sempre respeitando esta ordem e logica."

A história acima está diferente da anterior, pois na anterior era para verificar se ao menos uma das células era igual a 5 e agora é para verificar se todas estão vazias. :( É isso que consigo entender das suas explicações. Utilize o código abaixo.

Considerei que as células relacionadas não contêm fórmulas, como está na planilha que você disponibilizou.
Código: Selecionar todos
Sub ImprimePlansV2()
 Dim Sht As Worksheet
  Application.ScreenUpdating = False
  For Each Sht In Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
   If Application.CountA(Sht.Range("D4,F4,H4,J4,D11,F11,H11,J11")) <> 0 Then
    Sht.Visible = True
    Sht.PrintOut Copies:=1, Collate:=True
    Sht.Visible = xlSheetVeryHidden
   End If
  Next Sht
End Sub

Re: Printout 3 sheets com condiçoes VBA

Enviado: 01 Abr 2022 às 09:31
por ICEFROG
De fato foi como escreve na primeira não era como era suposto. por que esqueci de mencionar os 3 corpos e 3 impressões, basicamente cada rosto e o "espelho da impressão" de cada corpo, ou seha para ser impresso, e precisa verficar individualmente se D4,F4,H4,J4,D11,F11,H11,J11" contem o numero no exemplo e 5, se tiver vazio não faz nada, vai tentar no proximo assim sucessvamente. como foi dito o codigo esta funcionar perfeitamente se for criado um sub para cada um individual. so quero fazer um macro que vai unir basicamente os sub para que seja impressão com um unico botão respeitando que se D4,F4,H4,J4,D11,F11,H11,J11" está vazio não faz nada, tiver 5 vai imprimir, apenas as que respeitaram a regra.