Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 47
Default How to make Class Module universal

I've now tried that, and it give me "Error 2023" - whatever that means!

However, in a flash of inspiration I found something that works: using
the Parent property.

Thanks for your help.
Darren

Bill Renaud wrote:
I tried it inside a class module of mine that processes firewall log data,
and it seems to work, but you might be correct in that it might not work
for forms.

Try:

Dim varCaller as Variant

varCaller = Application.Caller

Set a breakpoint right after the final line above, then inspect varCaller
in the Locals window to see what you get.

Visual Basic Help for the Caller Property only lists a few types of
callers, and says an error is returned for any other type not listed, but
maybe this information is incomplete. (I am running Excel 2000.)

I know it will work for a macro called from a CommandBar button, as
varCaller returns a 2 element array, one element gives the button number,
and the other element lists the name of the CommandBar.

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 417
Default How to make Class Module universal

<<I found something that works: using the Parent property.

That would make perfect (more logical) sense!

--
Regards,
Bill Renaud



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 7,247
Default How to make Class Module universal

Application.Caller can be used only in Function procedure that was called
from a worksheet cell (in which case it returns a Range reference to the
cell(s) from which the function was called), or in a procedure called via
the OnAction property of a Shape object (in which case it is a String value
containing the name of the Shape). In any other context, Application.Caller
is an Error-type Variant containing a #REF error value.


--
Cordially,
Chip Pearson
Microsoft MVP - Excel, 10 Years
Pearson Software Consulting
www.cpearson.com
(email on the web site)


"Darren Hill" wrote in message
...
I've now tried that, and it give me "Error 2023" - whatever that means!

However, in a flash of inspiration I found something that works: using the
Parent property.

Thanks for your help.
Darren

Bill Renaud wrote:
I tried it inside a class module of mine that processes firewall log
data,
and it seems to work, but you might be correct in that it might not work
for forms.

Try:

Dim varCaller as Variant

varCaller = Application.Caller

Set a breakpoint right after the final line above, then inspect varCaller
in the Locals window to see what you get.

Visual Basic Help for the Caller Property only lists a few types of
callers, and says an error is returned for any other type not listed, but
maybe this information is incomplete. (I am running Excel 2000.)

I know it will work for a macro called from a CommandBar button, as
varCaller returns a 2 element array, one element gives the button number,
and the other element lists the name of the CommandBar.


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 417
Default How to make Class Module universal

In Excel 2000, for shapes that are controls on a CommandBar,
Application.Caller returns a 2 element array: element 1 is the control that
called the routine, and element 2 is the name of the CommandBar.

For example, if the first button on a CommandBar named "CommandBar Name"
calls the following routine:

Public Sub Test()
Dim varCaller as Variant

varCaller = Application.Caller
End Sub

....then varCaller will be the following:
varCaller(1) = 1
varCaller(2) = "CommandBar Name"

This is true, even if Sub Test is a method inside a class module.

Has this changed in later versions?
--
Regards,
Bill Renaud



  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 47
Default How to make Class Module universal

Thanks for the explanation, Chip.
By the way, I love your website - that's an astounding collection of
Excel support materials.

Darren

Chip Pearson wrote:
Application.Caller can be used only in Function procedure that was
called from a worksheet cell (in which case it returns a Range reference
to the cell(s) from which the function was called), or in a procedure
called via the OnAction property of a Shape object (in which case it is
a String value containing the name of the Shape). In any other context,
Application.Caller is an Error-type Variant containing a #REF error value.




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
how to make range names universal in workbook april Excel Discussion (Misc queries) 3 June 8th 09 08:33 PM
Can I group multiple spreadsheets to make universal changes? AndrewEdmunds Excel Discussion (Misc queries) 5 October 31st 08 04:26 PM
Make VBA Class Module Library Mark Olsen Excel Programming 1 March 27th 06 12:01 AM
Make A Universal Time Converter [email protected] New Users to Excel 1 December 2nd 04 04:31 AM
Variable from a sheet module in a class module in XL XP hglamy[_2_] Excel Programming 2 October 14th 03 05:48 PM


All times are GMT +1. The time now is 02:37 PM.

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

About Us

"It's about Microsoft Excel"