Array To View Specific Sheet(s)

G

GEdwards

Using a macro I need to view specific worksheets if they have content. I
will always want my "Invoice" sheet and if on the Invoice sheet, cell B12 has
a value I want to view the Invoice and Labour sheet. If cell B13 has a value
I also want to view the Materials sheet.

My macro, shown below, halts at the line "Sheets(Array(prtWhat)).Select".

How can I dynamically build the proper statement...
"Sheets(Array("Invoice", "Labour", "Materials")).Select"

Please help.

Sub ViewTest()

prtWhat = "Invoice"
Labour = ", Labour"
Materials = ", Materials"
If Range("B12").Value <> "" Then
prtWhat = prtWhat & Labour
Else
prtWhat = prtWhat
End If
If Range("B13").Value <> "" Then
prtWhat = prtWhat & Materials
Else
prtWhat = prtWhat
End If

MsgBox (prtWhat)

Sheets(Array(prtWhat)).Select
Sheets("Invoice").Activate
ActiveWindow.SelectedSheets.PrintPreview
Sheets("Invoice").Select
End Sub
 
R

Rick Rothstein

Don't use the Array function, rather, use the Split function... its first
argument is a String which you can build dynamically. For example...

Dim SheetStr As String
...........
...........
SheetStr = "Invoice"
With Sheets(SheetStr)
If .Range("B12").Value <> "" Then SheetStr = SheetStr & ",Labour"
If .Range("B13").Value <> "" Then SheetStr = SheetStr & ",Materials"
End With
Sheets(Split(SheetStr, ",")).Select

Note the comma in front of the additional sheet names that are being
concatenated... that is the delimiter that is used in the Split function
call (don't add any spaces around those comma or else the spaces will end up
in the sheet names).
 
J

Jacob Skaria

Try the below....It is always better to mention the sheet name while
referring to the range. Instead of Range("B12") mention as
Sheets("Sheetname").Range("B12")


Sub ViewTest()
Dim strSheets As String

strSheets = "Invoice"
If Range("B12") <> "" Then strSheets = strSheets & ",Labour"
If Range("B13") <> "" Then strSheets = strSheets & ",Materials"

Sheets(Split(strSheets, ",")).Select
Sheets("Invoice").Activate
ActiveWindow.SelectedSheets.PrintPreview
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top