Range naming

B

BigJim

Can anyone point me to help topics on named ranges. I
cannot find the syntax to set the rSource and rDest
variables below.

My puzzle has two arrays, an array of scores and an array
of results seperated by several rows of blank rows.
Each array has a name in the top-left cell (NS_Scores,
NS_Percentages) and each array is approx 8 rows * 32
columns. Both the widh and height will be variable once I
have better control of the code.

I want to apply a user-defined function to populate the
results array (one column at a time) from the Scores
array.

How do I pass references to individual columns of the two
arrays to the user defined function?

Public CalcPercentage (rSource as range, rDest as range)
as boolean
' some logic to produce the Dest array from the
Source.
exit function


....
dim rSource as range
dim i as integer
dim iNoRows as integer
iNoRows = 8
for i=1 to 24
rSource = range(range("MyScores").offset(i, col),
range("MyScores").offset(iNoRows, col))
rDest = range(rSource).offset("MyPercentage"))
dim bResult as boolean
bResult = CalcPercentage (rSource, rDest)
next i
....
 
B

Bill Manville

BigJim said:
I want to apply a user-defined function to populate the
results array (one column at a time) from the Scores
array.

A user-defined function can only alter cells by returning a value into
the cell(s) from which it was called.

So you could, for example, have a function that returns an array of
values to the destination range and array-enter the function call into
that range using Ctrl+Shift+Enter.

The function might look like:

Function CalcPercentage(rSource As Range)
Dim rResults()
Dim iRow As Integer
ReDim rResults(1 To rSource.Rows.Count, 1 To 1)
For iRow = 1 To rSource.Rows.Count
rResults(iRow, 1) = something or other
Next
CalcPercentage = rResults
End Function

Bill Manville
MVP - Microsoft Excel, Oxford, England
No email replies please - reply in newsgroup
 
B

BigJim

Thanks. My problem is with the syntax of the
"rSource = " line below.

dim iNoRows as integer
dim rSrc as range
iNoRows = 8
dim iColNo as integer
for iColNo=1 to 24
rSrc = range(range("MyScores").offset(iColNo, 1),
range("MyScores").offset(iColNo, iNoRows))
 
B

Bill Manville

BigJim said:
Thanks. My problem is with the syntax of the
"rSource = " line below.

Putting Set in front of rSrc would be helpful.
That's why it will be saying "Object variable not Set" to you.
You always have to use Set when making an object variable refer to a
particular object, as here.

Bill Manville
MVP - Microsoft Excel, Oxford, England
No email replies please - reply in newsgroup
 

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

Similar Threads

Can't find bug because program justs Stops !! 3
Looping through a spreadsheet 4
Macro Functionality 4
Calling a macro 2
Object Required 9
Error with calling Format sub 7
Else If Problem 3
Write data in reverse 1

Top