ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Function in class module cannot be assigned an array? (https://www.excelbanter.com/excel-programming/384102-function-class-module-cannot-assigned-array.html)

pinkfloydfan

Function in class module cannot be assigned an array?
 
Hi there,

I wonder if anybody can explain to me why I am getting the #VALUE!
error here.

I have a function GetSimMinValue which accesses another function
MinValue built into a class module, the first function is:

Function GetSimMinValue(Identifier As Integer, Step As Integer) As
Double
GetSimMinValue = Simulations(Identifier).MinValue(Step)
End Function

This function accesses the following function in the class module:


Public Function MinValue(Step As Integer)

Dim i As Long
Dim Mins() As Double
ReDim Mins(1 To 1, 1 To 2)

' code here to set the values of Min()

MinValue = Mins
End Function


Having stepped through the function everything works fine until the
final line: MinValue=Mins which seems to be causing the error.

Does anybody have any ideas why?

Thanks in advance
Lloyd


NickHK

Function in class module cannot be assigned an array?
 
Lloyd,
Firstly, I wouldn't use "Step" as the name of an argument; it's used by VB
in a For/Next loop.
e.g. For i=1 To 10 Step 2

Also, you should mark the return type of you functions.
So a simlified version:

<Worksheet
Private Sub CommandButton1_Click()
MsgBox GetSimMinValue(10)(1, 1)
End Sub
</Worksheet

<Module
Function GetSimMinValue(WhichStep As Integer) As Double()
Dim Sims As Class1
Set Sims = New Class1
GetSimMinValue = Sims.MinValue(WhichStep)
End Function
</Module

<Class1
Public Function MinValue(WhichStep As Integer) As Double()
ReDim Mins(1 To 1, 1 To 2) As Double
MinValue = Mins
End Function
</Class1

NickHK

"pinkfloydfan" wrote in message
ups.com...
Hi there,

I wonder if anybody can explain to me why I am getting the #VALUE!
error here.

I have a function GetSimMinValue which accesses another function
MinValue built into a class module, the first function is:

Function GetSimMinValue(Identifier As Integer, Step As Integer) As
Double
GetSimMinValue = Simulations(Identifier).MinValue(Step)
End Function

This function accesses the following function in the class module:


Public Function MinValue(Step As Integer)

Dim i As Long
Dim Mins() As Double
ReDim Mins(1 To 1, 1 To 2)

' code here to set the values of Min()

MinValue = Mins
End Function


Having stepped through the function everything works fine until the
final line: MinValue=Mins which seems to be causing the error.

Does anybody have any ideas why?

Thanks in advance
Lloyd




Bob Phillips

Function in class module cannot be assigned an array?
 
You would need to create an instance of that class, and reference the
function through that instance

Set myClass = clsClassName
myVar = myClass.MinValue(Step)

--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)



"pinkfloydfan" wrote in message
ups.com...
Hi there,

I wonder if anybody can explain to me why I am getting the #VALUE!
error here.

I have a function GetSimMinValue which accesses another function
MinValue built into a class module, the first function is:

Function GetSimMinValue(Identifier As Integer, Step As Integer) As
Double
GetSimMinValue = Simulations(Identifier).MinValue(Step)
End Function

This function accesses the following function in the class module:


Public Function MinValue(Step As Integer)

Dim i As Long
Dim Mins() As Double
ReDim Mins(1 To 1, 1 To 2)

' code here to set the values of Min()

MinValue = Mins
End Function


Having stepped through the function everything works fine until the
final line: MinValue=Mins which seems to be causing the error.

Does anybody have any ideas why?

Thanks in advance
Lloyd




pinkfloydfan

Function in class module cannot be assigned an array?
 
Thankyou Nick

I will use that presentation style in future. I should also have said
that "Simulations" was a global array of the specific Class.

However, your code has highlighted my error: it seems that each
function should have been defined with "As Double()" in order to
accept an array rather than both or one "As Double". I guess that not
adding this qualifier to both functions would also be ok.

Cheers
Lloyd


On 28 Feb, 11:25, "NickHK" wrote:
Lloyd,
Firstly, I wouldn't use "Step" as the name of an argument; it's used by VB
in a For/Next loop.
e.g. For i=1 To 10 Step 2

Also, you should mark the return type of you functions.
So a simlified version:

<Worksheet
Private Sub CommandButton1_Click()
MsgBox GetSimMinValue(10)(1, 1)
End Sub
</Worksheet

<Module
Function GetSimMinValue(WhichStep As Integer) As Double()
Dim Sims As Class1
Set Sims = New Class1
GetSimMinValue = Sims.MinValue(WhichStep)
End Function
</Module

<Class1
Public Function MinValue(WhichStep As Integer) As Double()
ReDim Mins(1 To 1, 1 To 2) As Double
MinValue = Mins
End Function
</Class1

NickHK

"pinkfloydfan" wrote in message

ups.com...



Hi there,


I wonder if anybody can explain to me why I am getting the #VALUE!
error here.


I have a function GetSimMinValue which accesses another function
MinValue built into a class module, the first function is:


Function GetSimMinValue(Identifier As Integer, Step As Integer) As
Double
GetSimMinValue = Simulations(Identifier).MinValue(Step)
End Function


This function accesses the following function in the class module:


Public Function MinValue(Step As Integer)


Dim i As Long
Dim Mins() As Double
ReDim Mins(1 To 1, 1 To 2)


' code here to set the values of Min()


MinValue = Mins
End Function


Having stepped through the function everything works fine until the
final line: MinValue=Mins which seems to be causing the error.


Does anybody have any ideas why?


Thanks in advance
Lloyd- Hide quoted text -


- Show quoted text -





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

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