Home |
Search |
Today's Posts |
#1
Posted to microsoft.public.excel.programming
|
|||
|
|||
CallByName() doesn't
CallByName() doesn't seem to be calling for me. I have no compile
errors, the method I'm trying to call is really there in the CodeModule, but it doesn't execute when called by name. This code snippet loops through all the components in the workbook. For any StdModules, it looks for the Proc "savethisModule", and calls it by name. The MsgBoxes show me that Module2 has a "savethisModule" method and it's about to be called ... but it doesn't get called. Note that the hardcoded call at the beginning of this snippet (commented-out) does work. So I suspect I'm missing something here ... any ideas? -Christopher Public Sub saveAllModules() Dim VBProj As VBIDE.VBProject Dim VBComp As VBIDE.VBComponent Dim CodeMod As VBIDE.CodeModule Dim procline As Long ' Call Module2.savethisModule Set VBProj = ActiveWorkbook.VBProject For Each VBComp In VBProj.VBComponents MsgBox "VBComp.Type=" & VBComp.Type & ", Name=" & VBComp.Name If (VBComp.Type = vbext_ct_StdModule) Then Set CodeMod = VBComp.CodeModule procline = 0 On Error Resume Next procline = CodeMod.ProcBodyLine("savethisModule", vbext_pk_Proc) If procline 0 Then MsgBox "calling " & "savethisModule" & _ "() in module" & VBComp.Name Call CallByName(CodeMod, "savethisModule", VbMethod) End If End If Next VBComp End Sub |
#2
Posted to microsoft.public.excel.programming
|
|||
|
|||
CallByName() doesn't
I don't think a sub routine in a code module can be considered a method of
an object. I would think if you used a class module and instantiated it this approach would work. If you want to run a sub 'by name' how about" Run "SubName"? -- Jim "christopher.allen" <"at workscape.com" wrote in message ... | CallByName() doesn't seem to be calling for me. I have no compile | errors, the method I'm trying to call is really there in the | CodeModule, but it doesn't execute when called by name. | | This code snippet loops through all the components in the workbook. | For any StdModules, it looks for the Proc "savethisModule", and calls | it by name. The MsgBoxes show me that Module2 has a "savethisModule" | method and it's about to be called ... but it doesn't get called. | | Note that the hardcoded call at the beginning of this snippet | (commented-out) does work. | | So I suspect I'm missing something here ... any ideas? | | -Christopher | | Public Sub saveAllModules() | Dim VBProj As VBIDE.VBProject | Dim VBComp As VBIDE.VBComponent | Dim CodeMod As VBIDE.CodeModule | Dim procline As Long | | ' Call Module2.savethisModule | | Set VBProj = ActiveWorkbook.VBProject | For Each VBComp In VBProj.VBComponents | MsgBox "VBComp.Type=" & VBComp.Type & ", Name=" & VBComp.Name | If (VBComp.Type = vbext_ct_StdModule) Then | Set CodeMod = VBComp.CodeModule | procline = 0 | On Error Resume Next | procline = CodeMod.ProcBodyLine("savethisModule", | vbext_pk_Proc) | If procline 0 Then | MsgBox "calling " & "savethisModule" & _ | "() in module" & VBComp.Name | Call CallByName(CodeMod, "savethisModule", VbMethod) | End If | End If | Next VBComp | End Sub |
#3
Posted to microsoft.public.excel.programming
|
|||
|
|||
CallByName() doesn't
The Application.Run thing worked, thanks!
Jim Rech wrote: I don't think a sub routine in a code module can be considered a method of an object. I would think if you used a class module and instantiated it this approach would work. If you want to run a sub 'by name' how about" Run "SubName"? |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Example for VBA function - CallByname! | Excel Discussion (Misc queries) | |||
CallByName in Excel for Fill object | Excel Programming | |||
callbyname in XL 2K and XL 2003 | Excel Programming | |||
Using CallByName for conversion function | Excel Programming |