View Single Post
  #6   Report Post  
Posted to microsoft.public.excel.programming
ker_01 ker_01 is offline
external usenet poster
 
Posts: 395
Default Passing sheet (using codename) to separate sub as optional par

Woohoo - success!

After careful rereading of the replies, I saw the use of the 'Call' keyword,
which isn't something I've used before (I can't recall ever passing
parameters to a sub before, I've always just used global variables).

It is now working as expected/hoped.
:)

Thanks again,
Keith

"ker_01" wrote:

Thank you Bob and JLG; I have incorporated the "not nothing" line. I still am
unable to test it due to my second issue with passing the procedure the
codename of the sheet; I'm still getting a RTE 438. Any additional thoughts
would be greatly appreciated.

I prefer to always use codename because my users may change the sheetname,
and I don't want to risk having that break the code.

Sub testShowSheets()
ShowAllSheets (Sheet14) '<--RTE 438
End Sub

Sub ShowAllSheets(Optional IndSht As Worksheet)
Dim sht As Worksheet
If Not IndSht Is Nothing Then
IndSht.Visible = xlSheetVisible
Else
For Each sht In Excel.ActiveWorkbook.Worksheets
sht.Visible = xlSheetVisible
Next
End If
End Sub

Just for comparison, I did try the sheetname as well, but got the same RTE 438

Sub testShowSheets()
ShowAllSheets (Sheets("Div 14")) '<--RTE 438
End Sub

Thank you,
Keith



"Bob Phillips" wrote:

You cannot run a sub with an argument, even an optional one, you need a sub
that calls it and run that.

But your code is flawed anyway, if you don't pass a sheet then IndSht object
is nothing, so you cannot test name. Better to test for Nothing

If Not IndSht Is Nothing Then
IndSht.Visible = xlSheetVisible


--

HTH

Bob

"ker_01" wrote in message
...
I have a large, convoluted workbook. With some of my subs that bring in raw
data from other files, I want to unhide the sheet where that data is
pasted
just so I can review it (without unhiding all sheets). There are also some
subs where I want to unhide every worksheet in the workbook.

So, I wrote a sub that I thought would handle both, but I'm getting errors
when I try to call it, and it also fails when I place the cursor inside
the
sub and try to run it directly.

Sub ShowAllSheets(Optional IndSht As Worksheet)
Dim sht As Worksheet
'name<codename, but irrelevant -just determines if a sheet was passed to
the sub
If (IndSht.Name) < "" Then
IndSht.Visible = xlSheetVisible
Else
For Each sht In Excel.ActiveWorkbook.Worksheets
sht.Visible = xlSheetVisible
Next
End If
End Sub

When I try to run the code above, it pops up a dialogue box with a list of
macros to run, rather than just running this one as I would have expected.

Also, when I try to call the sub (below) I get a run time error 438,
object
doesn't support this property or method

Sub ALoad_FinRTs()
ShowAllSheets (Sheet15)
'do stuff
End Sub

I think I have more than one problem here, but I'm not sure what the
problem
is, so I can't experiment with solutions...

Thanks!
Keith



.