2

I need to pass a String array to set a class property using its setter method. Array was declared in Module and it's perfectly set the values using Redim Preserve. When calling the Class setter method it gives error. If I continued to without setting array data type it worked. But I need to declare the data type as String.

I received a compile error "Type mismatch: array or user defined type expected."

Module

    Dim sPageDetails() As String
    ' set some values to array

    ' Declare class instance
    dim x as new X
    with x
       .SetPageNumberDetails(sPageDetails)  ' assume SetPageNumberDetails is the setter method in class X
    end with
End module
'class module start X
Private pageDetails() as String

' Setter for pageDetails array
Public Sub SetPageNumberDetails(ByRef sPageDetails() As String)
    pageDetails= sPageDetails
End Sub

' Getter for pageDetails array
Public Function GetPageNumberDetails() As String()
    GetPageNumberDetails= pageDetails
End Function
GSerg
  • 76,472
  • 17
  • 159
  • 346
Uditha
  • 57
  • 1
  • 1
  • 8

2 Answers2

4
.SetPageNumberDetails(sPageDetails)

Remove the parentheses:

.SetPageNumberDetails sPageDetails
Community
  • 1
  • 1
GSerg
  • 76,472
  • 17
  • 159
  • 346
-1

Remain the parentheses and add explicit 'Call':

Call .SetPageNumberDetails(sPageDetails)

It took 5-10 CPU ticks (~30 nsec), but code wil be more readable, editable, auditable etc. And it is simply comme il faut... .

user6698332
  • 407
  • 3
  • 14