ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Passing a range in a macro call (https://www.excelbanter.com/excel-programming/316812-passing-range-macro-call.html)

Otto Moehrbach[_6_]

Passing a range in a macro call
 
Excel 2002, WinXP
I feel a little silly asking this question, but I have tried every which way
to do this to no avail.
When calling one macro from another, how do you pass a range in the call?
Not the value of the range, but the range itself. Say it's MyRng. Thanks
for your help. Otto



Frank Kabel

Passing a range in a macro call
 
Hi
sub foo_main()
dim myrng as range
set myrng=activesheet.range("A1:B2")
foo_sub(myrng)
end sub

sub foo_sub(rng as range)
dim cell as range
for each cell in rng
msgbox cell.value
next
end sub

"Otto Moehrbach" wrote:

Excel 2002, WinXP
I feel a little silly asking this question, but I have tried every which way
to do this to no avail.
When calling one macro from another, how do you pass a range in the call?
Not the value of the range, but the range itself. Say it's MyRng. Thanks
for your help. Otto




Otto Moehrbach[_6_]

Passing a range in a macro call
 
Frank
Thanks for your help but there is a problem with it. I get an "Object
required." error in the foo-main macro on line "foo_sub (myrng)". Otto
"Frank Kabel" wrote in message
...
Hi
sub foo_main()
dim myrng as range
set myrng=activesheet.range("A1:B2")
foo_sub(myrng)
end sub

sub foo_sub(rng as range)
dim cell as range
for each cell in rng
msgbox cell.value
next
end sub

"Otto Moehrbach" wrote:

Excel 2002, WinXP
I feel a little silly asking this question, but I have tried every which
way
to do this to no avail.
When calling one macro from another, how do you pass a range in the call?
Not the value of the range, but the range itself. Say it's MyRng.
Thanks
for your help. Otto






Tom Ogilvy

Passing a range in a macro call
 
Sub Main()
Dim rng as Range
set rng = Range("A1")
processRange rgn
End Sub

Sub ProcessRange(MyRange as Range)
msgbox typename(MyRange)
End Sub

--
Regards,
Tom Ogilvy

"Otto Moehrbach" wrote in message
...
Excel 2002, WinXP
I feel a little silly asking this question, but I have tried every which

way
to do this to no avail.
When calling one macro from another, how do you pass a range in the call?
Not the value of the range, but the range itself. Say it's MyRng. Thanks
for your help. Otto





Tom Ogilvy

Passing a range in a macro call
 
That is because Frank has committed a serious syntax error. when calling a
subroutine (without using call) you don't enclose the arguments in Parens -
else they will be evaluated such as the error you have now.

foo_sub(myrng)

should be

foo_sub myrng

or

Call foo_sub(myrng)

--
Regards,
Tom Ogilvy


"Otto Moehrbach" wrote in message
...
Frank
Thanks for your help but there is a problem with it. I get an "Object
required." error in the foo-main macro on line "foo_sub (myrng)". Otto
"Frank Kabel" wrote in message
...
Hi
sub foo_main()
dim myrng as range
set myrng=activesheet.range("A1:B2")
foo_sub(myrng)
end sub

sub foo_sub(rng as range)
dim cell as range
for each cell in rng
msgbox cell.value
next
end sub

"Otto Moehrbach" wrote:

Excel 2002, WinXP
I feel a little silly asking this question, but I have tried every

which
way
to do this to no avail.
When calling one macro from another, how do you pass a range in the

call?
Not the value of the range, but the range itself. Say it's MyRng.
Thanks
for your help. Otto








Otto Moehrbach[_6_]

Passing a range in a macro call
 
Tom
You have come to the rescue again. I know to use "Call" when calling a
macro and passing something. But this time it completely slipped my mind.
Thanks. Otto
"Tom Ogilvy" wrote in message
...
Sub Main()
Dim rng as Range
set rng = Range("A1")
processRange rgn
End Sub

Sub ProcessRange(MyRange as Range)
msgbox typename(MyRange)
End Sub

--
Regards,
Tom Ogilvy

"Otto Moehrbach" wrote in message
...
Excel 2002, WinXP
I feel a little silly asking this question, but I have tried every which

way
to do this to no avail.
When calling one macro from another, how do you pass a range in the call?
Not the value of the range, but the range itself. Say it's MyRng.
Thanks
for your help. Otto







Frank Kabel

Passing a range in a macro call
 
Hi Tom
thanks for the correction. should have run it first in the VBA editor(one of
my common mistakes...)

"Tom Ogilvy" wrote:

That is because Frank has committed a serious syntax error. when calling a
subroutine (without using call) you don't enclose the arguments in Parens -
else they will be evaluated such as the error you have now.

foo_sub(myrng)

should be

foo_sub myrng

or

Call foo_sub(myrng)

--
Regards,
Tom Ogilvy


"Otto Moehrbach" wrote in message
...
Frank
Thanks for your help but there is a problem with it. I get an "Object
required." error in the foo-main macro on line "foo_sub (myrng)". Otto
"Frank Kabel" wrote in message
...
Hi
sub foo_main()
dim myrng as range
set myrng=activesheet.range("A1:B2")
foo_sub(myrng)
end sub

sub foo_sub(rng as range)
dim cell as range
for each cell in rng
msgbox cell.value
next
end sub

"Otto Moehrbach" wrote:

Excel 2002, WinXP
I feel a little silly asking this question, but I have tried every

which
way
to do this to no avail.
When calling one macro from another, how do you pass a range in the

call?
Not the value of the range, but the range itself. Say it's MyRng.
Thanks
for your help. Otto










All times are GMT +1. The time now is 11:40 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com