ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Referencing (https://www.excelbanter.com/excel-programming/306729-re-referencing.html)

Frank Kabel

Referencing
 
Hi
not really sure what you're trying to do.<could you give an example?

--
Regards
Frank Kabel
Frankfurt, Germany


solex wrote:
Hello,
Is it possible to reference the current cells value that a
forumula/macro is working on?

I have a macro that retrieves values from a database, but if the
database is down I would like the macro to return the current value
of the cell is this possible?

Thanks,
Dan


solex

Referencing
 
Frank,

Thanks for the response, but I found the answer to my question,
Application.Caller does exactly what I would like, with the exception of
causing a Circular Reference error, which I cannot seem to turn off with
Application.Iterations=True.

This must be a bug since I should be able to bypass the Circular reference
error with the Iterations property, have you seen anything with reagards to
the Iterations property not working?

Thanks,
Dan


"Frank Kabel" wrote in message
...
Hi
not really sure what you're trying to do.<could you give an example?

--
Regards
Frank Kabel
Frankfurt, Germany


solex wrote:
Hello,
Is it possible to reference the current cells value that a
forumula/macro is working on?

I have a macro that retrieves values from a database, but if the
database is down I would like the macro to return the current value
of the cell is this possible?

Thanks,
Dan




Dave Peterson[_3_]

Referencing
 
If you're referring to the .value property of the calling cell, try using .text.

Or post the relevant portions of your function.

solex wrote:

Frank,

Thanks for the response, but I found the answer to my question,
Application.Caller does exactly what I would like, with the exception of
causing a Circular Reference error, which I cannot seem to turn off with
Application.Iterations=True.

This must be a bug since I should be able to bypass the Circular reference
error with the Iterations property, have you seen anything with reagards to
the Iterations property not working?

Thanks,
Dan

"Frank Kabel" wrote in message
...
Hi
not really sure what you're trying to do.<could you give an example?

--
Regards
Frank Kabel
Frankfurt, Germany


solex wrote:
Hello,
Is it possible to reference the current cells value that a
forumula/macro is working on?

I have a macro that retrieves values from a database, but if the
database is down I would like the macro to return the current value
of the cell is this possible?

Thanks,
Dan


--

Dave Peterson


solex

Referencing
 
Dave,

The "Text" property raises the same error. Per your suggestion below is the
relevant code.

Thanks,
Dan


Public Function Rates(ByVal UseCache As Boolean) As Double

Dim rng As Range
Dim buf As Double
Dim itersave As Boolean

On Error GoTo ErrorHandler


buf = 0#

itersave = Application.Iteration
Application.Iteration = True
' Here is the ticket per the documentation:
' If the callers is A custom function entered in a single cell then
' A Range object specifying that cell is returned
Set rng = Application.Caller

If IsConnectionDead Then
' Get the data from the cache
If UseCache Then
buf = rng.Offset(0, 1).Text ' <--- Generates the "circular
reference" error.
Else
' this will generate a circular reference error
' which can be turned of using the interations property
' in options/calculations and must be retained the next
' time the sheet is opened
buf = rng.Value
End If
Else
Call Randomize(0.03)
buf = Rnd
End If

ExitHandler:
Set rng = Nothing
Application.Iteration = itersave
Rates= buf
Exit Function

ErrorHandler:
'TODO Report Error?
Resume ExitHandler

End Function


"Dave Peterson" wrote in message
...
If you're referring to the .value property of the calling cell, try using

..text.

Or post the relevant portions of your function.

solex wrote:

Frank,

Thanks for the response, but I found the answer to my question,
Application.Caller does exactly what I would like, with the exception of
causing a Circular Reference error, which I cannot seem to turn off with
Application.Iterations=True.

This must be a bug since I should be able to bypass the Circular

reference
error with the Iterations property, have you seen anything with reagards

to
the Iterations property not working?

Thanks,
Dan

"Frank Kabel" wrote in message
...
Hi
not really sure what you're trying to do.<could you give an example?

--
Regards
Frank Kabel
Frankfurt, Germany


solex wrote:
Hello,
Is it possible to reference the current cells value that a
forumula/macro is working on?

I have a macro that retrieves values from a database, but if the
database is down I would like the macro to return the current value
of the cell is this possible?

Thanks,
Dan


--

Dave Peterson




Dave Peterson[_3_]

Referencing
 
I don't know what Isconnectiondead does, but maybe:

buf = Val(rng.Offset(0, 1).Text)
and
buf = val(rng.text)

(I didn't go through the error handler anyway.)

And I'm not sure what you're doing, but shouldn't this function be volatile?

Or pass it the address of the cell under it:
Public Function Rates(ByVal UseCache As Boolean, cellbelow as range) As Double

so in A1:
=rates(true,a2)



solex wrote:

Dave,

The "Text" property raises the same error. Per your suggestion below is the
relevant code.

Thanks,
Dan

Public Function Rates(ByVal UseCache As Boolean) As Double

Dim rng As Range
Dim buf As Double
Dim itersave As Boolean

On Error GoTo ErrorHandler

buf = 0#

itersave = Application.Iteration
Application.Iteration = True
' Here is the ticket per the documentation:
' If the callers is A custom function entered in a single cell then
' A Range object specifying that cell is returned
Set rng = Application.Caller

If IsConnectionDead Then
' Get the data from the cache
If UseCache Then
buf = rng.Offset(0, 1).Text ' <--- Generates the "circular
reference" error.
Else
' this will generate a circular reference error
' which can be turned of using the interations property
' in options/calculations and must be retained the next
' time the sheet is opened
buf = rng.Value
End If
Else
Call Randomize(0.03)
buf = Rnd
End If

ExitHandler:
Set rng = Nothing
Application.Iteration = itersave
Rates= buf
Exit Function

ErrorHandler:
'TODO Report Error?
Resume ExitHandler

End Function

"Dave Peterson" wrote in message
...
If you're referring to the .value property of the calling cell, try using

.text.

Or post the relevant portions of your function.

solex wrote:

Frank,

Thanks for the response, but I found the answer to my question,
Application.Caller does exactly what I would like, with the exception of
causing a Circular Reference error, which I cannot seem to turn off with
Application.Iterations=True.

This must be a bug since I should be able to bypass the Circular

reference
error with the Iterations property, have you seen anything with reagards

to
the Iterations property not working?

Thanks,
Dan

"Frank Kabel" wrote in message
...
Hi
not really sure what you're trying to do.<could you give an example?

--
Regards
Frank Kabel
Frankfurt, Germany


solex wrote:
Hello,
Is it possible to reference the current cells value that a
forumula/macro is working on?

I have a macro that retrieves values from a database, but if the
database is down I would like the macro to return the current value
of the cell is this possible?

Thanks,
Dan


--

Dave Peterson


--

Dave Peterson



All times are GMT +1. The time now is 05:05 AM.

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