ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Getting Range of CurrentArray In Formula (https://www.excelbanter.com/excel-programming/310159-getting-range-currentarray-formula.html)

Gates_72

Getting Range of CurrentArray In Formula
 
Hi All,

This may fall under the MSKB213199, but I wanted to see
if anybody knew of a way to do this.

We have a function that looks through the worksheet for
all occurrences of that function (grouping the parameters
of that function for an OPC call).

I have no trouble finding the cells that contain the
function with that name. However, what I want to do is
find the selected range of each of those function calls
(top left and bottom right cells).

I tried to use the CurrentArray property of the cell that
is found to contain the function, but it only gives me a
range containing that cell, not the entire range.

For example, if the function is found in an array from
B2:D3, the CurrentArray.Rows.Count = 1 (same for
columns). That gives an offset of (0, 0), which makes
the first cell = last cell = B2.

Any ideas? I am trying to get around the problem with
assuming the shape and size of the formula array.

Thanks,
G72

Bernie Deitrick

Getting Range of CurrentArray In Formula
 
G72,

I'm not sure why, but when you use the currentarray, it only works in
functions called from subs. It won't work in functions called from
worksheets.

I.E., this will work:

Sub Test()
MsgBox CAAddress(Range("B2"))
End Sub

Function CAAddress(incell As Range) As String
CAAddress = incell.CurrentArray.Address
End Function

but using

=CAAddress(B2)

in another cell won't work. Go figure....

HTH,
Bernie
MS Excel MVP

"Gates_72" wrote in message
...
Hi All,

This may fall under the MSKB213199, but I wanted to see
if anybody knew of a way to do this.

We have a function that looks through the worksheet for
all occurrences of that function (grouping the parameters
of that function for an OPC call).

I have no trouble finding the cells that contain the
function with that name. However, what I want to do is
find the selected range of each of those function calls
(top left and bottom right cells).

I tried to use the CurrentArray property of the cell that
is found to contain the function, but it only gives me a
range containing that cell, not the entire range.

For example, if the function is found in an array from
B2:D3, the CurrentArray.Rows.Count = 1 (same for
columns). That gives an offset of (0, 0), which makes
the first cell = last cell = B2.

Any ideas? I am trying to get around the problem with
assuming the shape and size of the formula array.

Thanks,
G72




Tom Ogilvy

Getting Range of CurrentArray In Formula
 
for a multicell array formula the UDF can use application.Caller to return
the "array" of cells containing the function.

--
Regards,
Tom Ogilvy

"Bernie Deitrick" <deitbe @ consumer dot org wrote in message
...
G72,

I'm not sure why, but when you use the currentarray, it only works in
functions called from subs. It won't work in functions called from
worksheets.

I.E., this will work:

Sub Test()
MsgBox CAAddress(Range("B2"))
End Sub

Function CAAddress(incell As Range) As String
CAAddress = incell.CurrentArray.Address
End Function

but using

=CAAddress(B2)

in another cell won't work. Go figure....

HTH,
Bernie
MS Excel MVP

"Gates_72" wrote in message
...
Hi All,

This may fall under the MSKB213199, but I wanted to see
if anybody knew of a way to do this.

We have a function that looks through the worksheet for
all occurrences of that function (grouping the parameters
of that function for an OPC call).

I have no trouble finding the cells that contain the
function with that name. However, what I want to do is
find the selected range of each of those function calls
(top left and bottom right cells).

I tried to use the CurrentArray property of the cell that
is found to contain the function, but it only gives me a
range containing that cell, not the entire range.

For example, if the function is found in an array from
B2:D3, the CurrentArray.Rows.Count = 1 (same for
columns). That gives an offset of (0, 0), which makes
the first cell = last cell = B2.

Any ideas? I am trying to get around the problem with
assuming the shape and size of the formula array.

Thanks,
G72






Gates_72

Getting Range of CurrentArray In Formula
 
Hi Tom,

Thanks - that works for the UDF that is calling the
function. My problem is that I need to know the array of
all calls of that function when a single call runs.

The UDF is a complicated, re-entrant call that groups OPC
items for a single OPC SyncRead. We gather all the tags
into one call, and keep track of the cell address of that
tag. Finding each call is easy enough, and telling that
it HasArray is no problem. The problem is that if it
HasArray, I cannot find a way to know the size of that
array.

Thanks,
G72


-----Original Message-----
for a multicell array formula the UDF can use

application.Caller to return
the "array" of cells containing the function.

--
Regards,
Tom Ogilvy

"Bernie Deitrick" <deitbe @ consumer dot org wrote in

message
...
G72,

I'm not sure why, but when you use the currentarray,

it only works in
functions called from subs. It won't work in

functions called from
worksheets.

I.E., this will work:

Sub Test()
MsgBox CAAddress(Range("B2"))
End Sub

Function CAAddress(incell As Range) As String
CAAddress = incell.CurrentArray.Address
End Function

but using

=CAAddress(B2)

in another cell won't work. Go figure....

HTH,
Bernie
MS Excel MVP

"Gates_72" wrote

in message
...
Hi All,

This may fall under the MSKB213199, but I wanted to

see
if anybody knew of a way to do this.

We have a function that looks through the worksheet

for
all occurrences of that function (grouping the

parameters
of that function for an OPC call).

I have no trouble finding the cells that contain the
function with that name. However, what I want to do

is
find the selected range of each of those function

calls
(top left and bottom right cells).

I tried to use the CurrentArray property of the cell

that
is found to contain the function, but it only gives

me a
range containing that cell, not the entire range.

For example, if the function is found in an array

from
B2:D3, the CurrentArray.Rows.Count = 1 (same for
columns). That gives an offset of (0, 0), which

makes
the first cell = last cell = B2.

Any ideas? I am trying to get around the problem

with
assuming the shape and size of the formula array.

Thanks,
G72





.



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

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