Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
how to call a sub that has arguments
Hi, I'm trying to call this procedure located in the MyCode module:
Sub Worksheet_Change(ByVal Target As Range) code here End Sub (the above code works properly when it is in the Sheet1 (Budget) module) From this procedure which is in the Sheet1 (Budget) module. How do I write the code below? The best I can come up with is: Sub YearChange() Call MyCode.Worksheet_Change End Sub It does not work, I don't know how to handle the argument within the parenthesis. Also, I don't think I need to include the MyCode as part of the path, but a similar Call procedure I've done without arguments only works if I include this in the path. What might I have done wrong. I would appreciate anyone's help with writing the bottom code correctly. Gratefully, Harold |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
how to call a sub that has arguments
The title line of the code:
Sub Worksheet_Change(ByVal Target As Range) identifies it as worksheet event code. In this case, it is code that executes when there is a change on the worksheet. Correctly written it would be: Private Sub Worksheet_Change(ByVal Target As Range). That said, if you want the code to execute without making a change to the worksheet, then the easy way is to change the title line to some other name like: Sub myChangedSub() 'Code here End Sub Then you can put it in the public code module and call it like: Sub YearChange() Call myChangedSub End Sub Or just run it instead of calling it. But you might have to change some of the code to make it work in the public module for the specific sheet that you want the data to apply to. "Harold Good" wrote in message ... Hi, I'm trying to call this procedure located in the MyCode module: Sub Worksheet_Change(ByVal Target As Range) code here End Sub (the above code works properly when it is in the Sheet1 (Budget) module) From this procedure which is in the Sheet1 (Budget) module. How do I write the code below? The best I can come up with is: Sub YearChange() Call MyCode.Worksheet_Change End Sub It does not work, I don't know how to handle the argument within the parenthesis. Also, I don't think I need to include the MyCode as part of the path, but a similar Call procedure I've done without arguments only works if I include this in the path. What might I have done wrong. I would appreciate anyone's help with writing the bottom code correctly. Gratefully, Harold |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
how to call a sub that has arguments
MyCode is the codename of the worksheet, right?
Remove the word Private from that worksheet_change procedure line: I had this in the myCode worksheet module: Option Explicit Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Address End Sub Then I called that procedure using: Option Explicit Sub testme() Call myCode.Worksheet_Change(Target:=myCode.Range("a1") ) End Sub This makes it look like A1 on that sheet changing--and making the Worksheet_change fire. Harold Good wrote: Hi, I'm trying to call this procedure located in the MyCode module: Sub Worksheet_Change(ByVal Target As Range) code here End Sub (the above code works properly when it is in the Sheet1 (Budget) module) From this procedure which is in the Sheet1 (Budget) module. How do I write the code below? The best I can come up with is: Sub YearChange() Call MyCode.Worksheet_Change End Sub It does not work, I don't know how to handle the argument within the parenthesis. Also, I don't think I need to include the MyCode as part of the path, but a similar Call procedure I've done without arguments only works if I include this in the path. What might I have done wrong. I would appreciate anyone's help with writing the bottom code correctly. Gratefully, Harold -- Dave Peterson |
#4
Posted to microsoft.public.excel.programming
|
|||
|
|||
how to call a sub that has arguments
You could also use this:
Option Explicit Sub testme() Application.Run "'" & ThisWorkbook.Name _ & "'!myCode.Worksheet_Change", myCode.Range("a1") End Sub And keep the private in the procedure statement: Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Address End Sub ========= You can determine the code name of the sheet by: Go into the VBE Show the project explorer (hit ctrl-r) Select your workbook's project Select the worksheet that owns the code Hit F4 to see the properties. The Codename is the (name) property in that list of properties. The Name property (without the ()'s) is the name that the user sees on the sheet tab in excel. Harold Good wrote: Hi, I'm trying to call this procedure located in the MyCode module: Sub Worksheet_Change(ByVal Target As Range) code here End Sub (the above code works properly when it is in the Sheet1 (Budget) module) From this procedure which is in the Sheet1 (Budget) module. How do I write the code below? The best I can come up with is: Sub YearChange() Call MyCode.Worksheet_Change End Sub It does not work, I don't know how to handle the argument within the parenthesis. Also, I don't think I need to include the MyCode as part of the path, but a similar Call procedure I've done without arguments only works if I include this in the path. What might I have done wrong. I would appreciate anyone's help with writing the bottom code correctly. Gratefully, Harold -- Dave Peterson |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Re : Excel To Call Sub and Assign Arguments | Excel Programming | |||
call a macro with arguments in a Command Button | Excel Programming | |||
arguments | Excel Discussion (Misc queries) | |||
Call Center Management: How to calculate 'cost per call' | Excel Discussion (Misc queries) | |||
call a sub with arguments from Worksheet_FollowHyperlink event | Excel Programming |