Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Pass array of sheet names to subroutine

I want to insert a row in one or more adjacent sheets. I have written a
subroutine:

Sub sbrInsertRow(ParamArray avarSheetSub() As Variant)
With Worksheets(avarSheetSub())
.Select
.Rows(5).Insert
.... formatting instructions ...
End With
End Sub

I call the subroutine, sending the names of Sheet 3 to the end:

intSheet=Worksheets.Count-3
For i = 0 To intSheet
avarSheet(i) = Worksheets(i + 3).Name
Next
sbrInsertRow avarSheet

At a breakpoint on the calling line, debug.print correctly enumerates
avarSheet, but at a breakpoint on the With Worksheets line of the sub,
avarSheetSub is empty.

I know I've done something wrong, but what?!?
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Pass array of sheet names to subroutine

One place is avarSheetSub and the other is just avarSheet.

"HartJF" wrote:

I want to insert a row in one or more adjacent sheets. I have written a
subroutine:

Sub sbrInsertRow(ParamArray avarSheetSub() As Variant)
With Worksheets(avarSheetSub())
.Select
.Rows(5).Insert
... formatting instructions ...
End With
End Sub

I call the subroutine, sending the names of Sheet 3 to the end:

intSheet=Worksheets.Count-3
For i = 0 To intSheet
avarSheet(i) = Worksheets(i + 3).Name
Next
sbrInsertRow avarSheet

At a breakpoint on the calling line, debug.print correctly enumerates
avarSheet, but at a breakpoint on the With Worksheets line of the sub,
avarSheetSub is empty.

I know I've done something wrong, but what?!?

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Pass array of sheet names to subroutine

I call the subroutine from a frm_click routine. I have used both identical
and differentiated names in testing. I differentiated the names here to
avoid confusion.

"JLGWhiz" wrote:

One place is avarSheetSub and the other is just avarSheet.

"HartJF" wrote:

I want to insert a row in one or more adjacent sheets. I have written a
subroutine:

Sub sbrInsertRow(ParamArray avarSheetSub() As Variant)
With Worksheets(avarSheetSub())
.Select
.Rows(5).Insert
... formatting instructions ...
End With
End Sub

I call the subroutine, sending the names of Sheet 3 to the end:

intSheet=Worksheets.Count-3
For i = 0 To intSheet
avarSheet(i) = Worksheets(i + 3).Name
Next
sbrInsertRow avarSheet

At a breakpoint on the calling line, debug.print correctly enumerates
avarSheet, but at a breakpoint on the With Worksheets line of the sub,
avarSheetSub is empty.

I know I've done something wrong, but what?!?

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Pass array of sheet names to subroutine

Disregard that. Did you try it with Parentheses

sbrInsertRow(avarSheet)

"HartJF" wrote:

I want to insert a row in one or more adjacent sheets. I have written a
subroutine:

Sub sbrInsertRow(ParamArray avarSheetSub() As Variant)
With Worksheets(avarSheetSub())
.Select
.Rows(5).Insert
... formatting instructions ...
End With
End Sub

I call the subroutine, sending the names of Sheet 3 to the end:

intSheet=Worksheets.Count-3
For i = 0 To intSheet
avarSheet(i) = Worksheets(i + 3).Name
Next
sbrInsertRow avarSheet

At a breakpoint on the calling line, debug.print correctly enumerates
avarSheet, but at a breakpoint on the With Worksheets line of the sub,
avarSheetSub is empty.

I know I've done something wrong, but what?!?

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Pass array of sheet names to subroutine

No luck with sbrInsertRow(avarSheet), sbrInsertRow(avarSheet()), or
sbrInsertRow avarSheet()

"JLGWhiz" wrote:

Disregard that. Did you try it with Parentheses

sbrInsertRow(avarSheet)

"HartJF" wrote:

I want to insert a row in one or more adjacent sheets. I have written a
subroutine:

Sub sbrInsertRow(ParamArray avarSheetSub() As Variant)
With Worksheets(avarSheetSub())
.Select
.Rows(5).Insert
... formatting instructions ...
End With
End Sub

I call the subroutine, sending the names of Sheet 3 to the end:

intSheet=Worksheets.Count-3
For i = 0 To intSheet
avarSheet(i) = Worksheets(i + 3).Name
Next
sbrInsertRow avarSheet

At a breakpoint on the calling line, debug.print correctly enumerates
avarSheet, but at a breakpoint on the With Worksheets line of the sub,
avarSheetSub is empty.

I know I've done something wrong, but what?!?



  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Pass array of sheet names to subroutine

try sbrInsertRow(avarSheet(i))

"HartJF" wrote:

No luck with sbrInsertRow(avarSheet), sbrInsertRow(avarSheet()), or
sbrInsertRow avarSheet()

"JLGWhiz" wrote:

Disregard that. Did you try it with Parentheses

sbrInsertRow(avarSheet)

"HartJF" wrote:

I want to insert a row in one or more adjacent sheets. I have written a
subroutine:

Sub sbrInsertRow(ParamArray avarSheetSub() As Variant)
With Worksheets(avarSheetSub())
.Select
.Rows(5).Insert
... formatting instructions ...
End With
End Sub

I call the subroutine, sending the names of Sheet 3 to the end:

intSheet=Worksheets.Count-3
For i = 0 To intSheet
avarSheet(i) = Worksheets(i + 3).Name
Next
sbrInsertRow avarSheet

At a breakpoint on the calling line, debug.print correctly enumerates
avarSheet, but at a breakpoint on the With Worksheets line of the sub,
avarSheetSub is empty.

I know I've done something wrong, but what?!?

  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Pass array of sheet names to subroutine

That would insert a row on one sheet at a time. My problem is that, since
Sheet2 is an accumulating cover sheet, if I don't insert as a group, the
summation formula is destroyed. Sheet2!C15 contains =sum(Sheet3:SheetN!C15),
where SheetN is the final sheet. Inserting a row at Sheet3!5:5 makes
Sheet2!C15 contain =#REF! I think I need to group Sheet3:SheetN and then
insert row 5. I need this in a subroutine because the statement after the
calling statement is:

sbrInsertRow "Sheet2"

"JLGWhiz" wrote:

try sbrInsertRow(avarSheet(i))

"HartJF" wrote:

No luck with sbrInsertRow(avarSheet), sbrInsertRow(avarSheet()), or
sbrInsertRow avarSheet()

"JLGWhiz" wrote:

Disregard that. Did you try it with Parentheses

sbrInsertRow(avarSheet)

"HartJF" wrote:

I want to insert a row in one or more adjacent sheets. I have written a
subroutine:

Sub sbrInsertRow(ParamArray avarSheetSub() As Variant)
With Worksheets(avarSheetSub())
.Select
.Rows(5).Insert
... formatting instructions ...
End With
End Sub

I call the subroutine, sending the names of Sheet 3 to the end:

intSheet=Worksheets.Count-3
For i = 0 To intSheet
avarSheet(i) = Worksheets(i + 3).Name
Next
sbrInsertRow avarSheet

At a breakpoint on the calling line, debug.print correctly enumerates
avarSheet, but at a breakpoint on the With Worksheets line of the sub,
avarSheetSub is empty.

I know I've done something wrong, but what?!?

  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7
Default Pass array of sheet names to subroutine

I think I discovered the answer (at least it works!)

When I call
sbrInsertRow avarSheet()
I am sending just one parameter, an array of variants. When the subroutine
receives
Sub sbrInsertRow(avarSheetSub as Variant)
it receives one parameter, a variant containing an array. I can still refer
to individual elements in the receiving array
Debug.Print avarSheetSub(0)
or I can refer to the entire array
Worksheets(avarSheetSub).Select

This is terribly confusing, but I found a helpful strand at
http://www.mrexcel.com/archive2/13000/14499.htm

Thanks for your help JLGWhiz!

"JLGWhiz" wrote:

try sbrInsertRow(avarSheet(i))

"HartJF" wrote:

No luck with sbrInsertRow(avarSheet), sbrInsertRow(avarSheet()), or
sbrInsertRow avarSheet()

"JLGWhiz" wrote:

Disregard that. Did you try it with Parentheses

sbrInsertRow(avarSheet)

"HartJF" wrote:

I want to insert a row in one or more adjacent sheets. I have written a
subroutine:

Sub sbrInsertRow(ParamArray avarSheetSub() As Variant)
With Worksheets(avarSheetSub())
.Select
.Rows(5).Insert
... formatting instructions ...
End With
End Sub

I call the subroutine, sending the names of Sheet 3 to the end:

intSheet=Worksheets.Count-3
For i = 0 To intSheet
avarSheet(i) = Worksheets(i + 3).Name
Next
sbrInsertRow avarSheet

At a breakpoint on the calling line, debug.print correctly enumerates
avarSheet, but at a breakpoint on the With Worksheets line of the sub,
avarSheetSub is empty.

I know I've done something wrong, but what?!?

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Populate an array with sheet names? Steve Excel Programming 1 January 30th 07 08:14 PM
XL2007 and array of sheet names? Jack Sheet Excel Discussion (Misc queries) 0 August 5th 06 02:57 PM
Pass a Variable List Of Values To Subroutine or Function Dean Hinson[_3_] Excel Programming 2 January 28th 05 06:49 PM
How to pass a workshhet name as a parameter into a subroutine ? yigalb Excel Discussion (Misc queries) 4 January 9th 05 10:28 AM
Sheet Names Array Rocky McKinley Excel Programming 2 June 9th 04 11:49 PM


All times are GMT +1. The time now is 05:31 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"