ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Object Is Object evaluation problem (https://www.excelbanter.com/excel-programming/377664-object-object-evaluation-problem.html)

mickey

Object Is Object evaluation problem
 
Having a problem getting to "Range" objects to test as equivalent. In the
simplified code below after calling Sub One and then Sub Two with the same
"Range" argument the MsgBox displayed the addresses of X and C as the same,
but failed to evaluate the Object X and C as being equivalent.

What's wrong with the code?
(Of course this assumes my simplified code below accurately represents my
actual code :-)

Simplified code:

Sub One (ByVal A As Range)
Call Test(A, True)
End Sub

Sub Two(ByVal B As Range)
Call Test(B, False)
End Sub

Sub Test(ByVal X as Range, Flag As Boolean)
Static C As Range

MsgBox X.Address & " " & C.Address
' After Second Call to Test both addresses show the same value.

Select Case Flag
Case Is = True
Set C = X
Case Is = False
If X Is C Then
MsgBox "X is C"
Else
MsgBox "X is not C"
End If
End Select
End Sub

Call One(R) ' Where R is a cell reference (Range).
Call Two(R) ' Where R is same cell reference.

Jon Peltier

Object Is Object evaluation problem
 
Test whether R.Address = C.Address.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
http://PeltierTech.com
_______


"mickey" wrote in message
...
Having a problem getting to "Range" objects to test as equivalent. In the
simplified code below after calling Sub One and then Sub Two with the same
"Range" argument the MsgBox displayed the addresses of X and C as the
same,
but failed to evaluate the Object X and C as being equivalent.

What's wrong with the code?
(Of course this assumes my simplified code below accurately represents my
actual code :-)

Simplified code:

Sub One (ByVal A As Range)
Call Test(A, True)
End Sub

Sub Two(ByVal B As Range)
Call Test(B, False)
End Sub

Sub Test(ByVal X as Range, Flag As Boolean)
Static C As Range

MsgBox X.Address & " " & C.Address
' After Second Call to Test both addresses show the same value.

Select Case Flag
Case Is = True
Set C = X
Case Is = False
If X Is C Then
MsgBox "X is C"
Else
MsgBox "X is not C"
End If
End Select
End Sub

Call One(R) ' Where R is a cell reference (Range).
Call Two(R) ' Where R is same cell reference.




mickey

Object Is Object evaluation problem
 
Actually, that's what I ended up doing, but I was just wondering if anyone
knew why the Object comparison apparently failed.

Thanks for your response.


"Jon Peltier" wrote:

Test whether R.Address = C.Address.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
http://PeltierTech.com
_______


"mickey" wrote in message
...
Having a problem getting to "Range" objects to test as equivalent. In the
simplified code below after calling Sub One and then Sub Two with the same
"Range" argument the MsgBox displayed the addresses of X and C as the
same,
but failed to evaluate the Object X and C as being equivalent.

What's wrong with the code?
(Of course this assumes my simplified code below accurately represents my
actual code :-)

Simplified code:

Sub One (ByVal A As Range)
Call Test(A, True)
End Sub

Sub Two(ByVal B As Range)
Call Test(B, False)
End Sub

Sub Test(ByVal X as Range, Flag As Boolean)
Static C As Range

MsgBox X.Address & " " & C.Address
' After Second Call to Test both addresses show the same value.

Select Case Flag
Case Is = True
Set C = X
Case Is = False
If X Is C Then
MsgBox "X is C"
Else
MsgBox "X is not C"
End If
End Select
End Sub

Call One(R) ' Where R is a cell reference (Range).
Call Two(R) ' Where R is same cell reference.





Jon Peltier

Object Is Object evaluation problem
 
They've never worked this way as far as I can remember, so without bothering
to wonder why (it's MS & XL after all), I just learned what worked.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
http://PeltierTech.com
_______


"mickey" wrote in message
...
Actually, that's what I ended up doing, but I was just wondering if anyone
knew why the Object comparison apparently failed.

Thanks for your response.


"Jon Peltier" wrote:

Test whether R.Address = C.Address.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
http://PeltierTech.com
_______


"mickey" wrote in message
...
Having a problem getting to "Range" objects to test as equivalent. In
the
simplified code below after calling Sub One and then Sub Two with the
same
"Range" argument the MsgBox displayed the addresses of X and C as the
same,
but failed to evaluate the Object X and C as being equivalent.

What's wrong with the code?
(Of course this assumes my simplified code below accurately represents
my
actual code :-)

Simplified code:

Sub One (ByVal A As Range)
Call Test(A, True)
End Sub

Sub Two(ByVal B As Range)
Call Test(B, False)
End Sub

Sub Test(ByVal X as Range, Flag As Boolean)
Static C As Range

MsgBox X.Address & " " & C.Address
' After Second Call to Test both addresses show the same value.

Select Case Flag
Case Is = True
Set C = X
Case Is = False
If X Is C Then
MsgBox "X is C"
Else
MsgBox "X is not C"
End If
End Select
End Sub

Call One(R) ' Where R is a cell reference (Range).
Call Two(R) ' Where R is same cell reference.







Jon Peltier

Object Is Object evaluation problem
 
In fact, a lot of these object comparisons don't work. You have to resort to
approaches like this:

Worksheets:
If wksA.Name = wksB.Name Then

Workbooks
If WbkA.Name = wbkB.Name Then

etc.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
http://PeltierTech.com
_______


"mickey" wrote in message
...
Actually, that's what I ended up doing, but I was just wondering if anyone
knew why the Object comparison apparently failed.

Thanks for your response.


"Jon Peltier" wrote:

Test whether R.Address = C.Address.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Tutorials and Custom Solutions
http://PeltierTech.com
_______


"mickey" wrote in message
...
Having a problem getting to "Range" objects to test as equivalent. In
the
simplified code below after calling Sub One and then Sub Two with the
same
"Range" argument the MsgBox displayed the addresses of X and C as the
same,
but failed to evaluate the Object X and C as being equivalent.

What's wrong with the code?
(Of course this assumes my simplified code below accurately represents
my
actual code :-)

Simplified code:

Sub One (ByVal A As Range)
Call Test(A, True)
End Sub

Sub Two(ByVal B As Range)
Call Test(B, False)
End Sub

Sub Test(ByVal X as Range, Flag As Boolean)
Static C As Range

MsgBox X.Address & " " & C.Address
' After Second Call to Test both addresses show the same value.

Select Case Flag
Case Is = True
Set C = X
Case Is = False
If X Is C Then
MsgBox "X is C"
Else
MsgBox "X is not C"
End If
End Select
End Sub

Call One(R) ' Where R is a cell reference (Range).
Call Two(R) ' Where R is same cell reference.








All times are GMT +1. The time now is 12:15 PM.

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