View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming
Dana DeLouis[_3_] Dana DeLouis[_3_] is offline
external usenet poster
 
Posts: 690
Default how pass array to a function?

For n = 1 to 9
If Array(n) = x then MyFunction = True
Next


Hi. Would this idea help?

Sub TestIt()
Dim v
v = Array(1, 2, 3, "Cat", 4, 5)

Debug.Print MemberQ(6, v) 'Is 6 in v?
Debug.Print MemberQ(4, v)
Debug.Print MemberQ("Dog", v)
Debug.Print MemberQ("Cat", v)
End Sub

Returns:
False
True
False
True

Function MemberQ(x, M) As Boolean
'// Is x a member of Array M ?
On Error Resume Next
MemberQ = WorksheetFunction.Match(x, M, 0) 0
End Function

= = = = = = = = = =
HTH :)
Dana DeLouis


On 3/19/2010 1:44 AM, John wrote:
I sort of assumed I had dimmed the array and filled it with values
before the function.

So: Dim Array(9) as long
Dim n as long
For N = 1 to 9
Array(n)=n
Next

The following creates and error. Also if i just use the Array(9) in the
function it creates and error.

Public Function MyFunction(x as long,Array() as long) as Boolean
Dim n as Long
MyFunction=False
For n = 1 to 9
If Array(n) = x then MyFunction = True
Next
End Function

I'm not sure if what you suggested gets around that. Or are you saying I
just can't include that array inside the function period?

John

Dennis Tucker wrote:
Do not pass an array!

The key here is the "Scope of Variables".

At the top of the module, not inside any Sub or Function, put the
declaration of the array.

Dim MyArray(3,35) as string (just an example)

Now MyArray() has a wider scope. The scope in this case is the current
module(or userform).

For even wider scope use this

Public MyArray(3,35) as string (just an example)

The scope in this case is the current project(all userforms and
modules inside the current project.

Dennis

"John" wrote in message
...
If you have an Array, say Array(9), how do you pass that information
for a function to use?

For example:
Public Function MyFunction(x as long) as Boolean
Dim n as Long
MyFunction=False
For n = 1 to 9
If Array(n) = x then MyFunction = True
Next
End Function

I know you can't have Public Function MyFunction(x as Long, Array()
as long) as Boolean"

But there has to be some way for public functions to access arrays
outside the function doesn't there?

Thanks

John



--
= = = = = = =
HTH :)
Dana DeLouis