Comparing Object References

G

Guest

Is there a way in VBA to compare Object References?

Consider the following

Option Explicit
Dim WBArray(1 To 1) As Workbook

Public Sub assign()
Set WBArray(1) = ActiveWorkbook
End Sub

Public Sub test()
If WBArray(1) = ActiveWorkbook Then
MsgBox "Yes"
Else
MsgBox "No"
End If
End Sub

Functionally, I want to make an AddIn with a class module that captures
Application events, but I only want to execute the code for those events on
workbooks that the user has told me are part of my application. So, I was
considering having the user tell me which workbooks are "mine" and in the
event handlers, the first thing I do is check to see if the event causing
workbook is in the list. I was hoping to not have to manage names or other
user definable properties.

Above, in test(), I functionally want to compare the object reference in the
array against the object reference for ActiveWorkbook to see if they refer to
the same object.

Is this something I can do in VBA? (Excel 2003) I could capture the
workbook.name property, and track changes to the name, but I was hoping to
avoid that.

Bob
 
G

Guest

I forgot to include, the IF statement in Test() bombs with

Run-time error '91':

Object variable or With block variable not set.

Bob
 
G

Guest

Sorry, forget that last error message, different code ....

The error message is:

Run-time error '438':

Object doesn't support this property or method.
 
J

Jim Cone

Bob,

Change...
If WBArray(1) = ActiveWorkbook Then
To...
If WBArray(1) is ActiveWorkbook Then
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)



"INTP56"
<[email protected]>
wrote in message
Is there a way in VBA to compare Object References?
Consider the following
Option Explicit
Dim WBArray(1 To 1) As Workbook

Public Sub assign()
Set WBArray(1) = ActiveWorkbook
End Sub

Public Sub test()
If WBArray(1) = ActiveWorkbook Then '<<<<<
MsgBox "Yes"
Else
MsgBox "No"
End If
End Sub

Functionally, I want to make an AddIn with a class module that captures
Application events, but I only want to execute the code for those events on
workbooks that the user has told me are part of my application. So, I was
considering having the user tell me which workbooks are "mine" and in the
event handlers, the first thing I do is check to see if the event causing
workbook is in the list. I was hoping to not have to manage names or other
user definable properties.
Above, in test(), I functionally want to compare the object reference in the
array against the object reference for ActiveWorkbook to see if they refer to
the same object.
Is this something I can do in VBA? (Excel 2003) I could capture the
workbook.name property, and track changes to the name, but I was hoping to
avoid that.
Bob
 
M

Matthew Pfluger

Thank you very much, Jim! This is also exactly what I was looking for. I
hope it works with other objects as well. I shall do more testing...

Thanks,
Matthew Pfluger
 
J

Jim Cone

Matthew,
You are welcome.
--
Jim Cone
Portland, Oregon USA



"Matthew Pfluger"
wrote in message
Thank you very much, Jim! This is also exactly what I was looking for. I
hope it works with other objects as well. I shall do more testing...
Thanks,
Matthew Pfluger
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top