Forum

Help finishing prin...
 
Notifications
Clear all

Help finishing printout VBA

2 Posts
2 Users
0 Reactions
85 Views
(@sunstrider)
Posts: 1
New Member
Topic starter
 

Hey guys new here 🙂

 

Look for some help finishing the code.

 

So I have 3 body(sheet) wich are called body1(2)(2) the mirror to be printed those are called tobeprintedsheet1(2)(3).

 

I made a sub to call all of those at once, the issue is it doesnt check if all 3 body meet the condition, it has to at least have one cell with "9" then will print, if it has less than 9 will end sub. 

 

How it's working right now, if I press  printall button, let assume body 1 and 2 meet the condition and 3 doesn't, it will still print body3, when call tobeprintedsheet1(2)(3).

 

Take a look to the code here:

Spoiler

Private Sub Print_Body1()

Dim vArray, vEntry, bPrint As Boolean
vArray = Array("D4", "F4", "H4", "J4", "D11", "F11", "H11", "J11")

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

Application.ScreenUpdating = False

With Sheets("sheettobeprinted31")
If bPrint Then
.Visible = True
.PrintOut Copies:=1, Collate:=True
Debug.Print "printed"
.Visible = xlSheetVeryHidden
Else
Debug.Print "printed"
End If
End With

Application.ScreenUpdating = True
End Sub
Private Sub Print_Body2()

Dim vArray, vEntry, bPrint As Boolean
vArray = Array("D4", "F4", "H4", "J4", "D11", "F11", "H11", "J11")

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

Application.ScreenUpdating = False

With Sheets("sheettobeprinted2")
If bPrint Then
.Visible = True
.PrintOut Copies:=1, Collate:=True
Debug.Print "printed"
.Visible = xlSheetVeryHidden
Else
Debug.Print "printed"
End If
End With

Application.ScreenUpdating = True

End Sub
Private Sub Print_Body3()

Dim vArray, vEntry, bPrint As Boolean
vArray = Array("D4", "F4", "H4", "J4", "D11", "F11", "H11", "J11")

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

Application.ScreenUpdating = False

With Sheets("sheettobeprinted3")
If bPrint Then
.Visible = True
.PrintOut Copies:=1, Collate:=True
Debug.Print "printed"
.Visible = xlSheetVeryHidden
Else
Debug.Print "printed"
End If
End With

Application.ScreenUpdating = True
End Sub

Private Sub printall()
Print_Body1
Print_Body2
Print_Body3
End Sub

 
Posted : 18/04/2022 5:17 pm
(@jstewart)
Posts: 216
Estimable Member
 

I think your problem is your bPrint variable and how it is currently operating. I think what you need is to do the print command inside your loop and then set bPrint back to false before moving on to the next variable in your array. As it stands now bPrint is true being changed to true and it will print everything.

My disclaimer: VBA is not my strong area in Excel so I could be misreading things, but I know that's where I'd start at least.

 
Posted : 19/04/2022 10:20 am
Share: