Trying to initialize an object class. In the object, I keep the ID of the timekeeper (person) and an array of RelatedTimekeepers. To do this, I need to append to an array with a list of RelatedID.
The function is question is AddRelatedTimekeeperNumber. Currently, it fails a the commented line.
These are added to a object called timekeeper.
My class looks like:
' TIMEKEEPER CLASS
Private sTimekeeperNumber As String
Private sRelatedTimekeeperNumbers() As Variant
Public Property Let TimekeeperNumber(TimekeeperNumber As String)
sTimekeeperNumber = TimekeeperNumber
End Property
Public Property Get TimekeeperNumber() As String
TimekeeperNumber = sTimekeeperNumber
End Property
Public Sub AddRelatedTimekeeperNumber(RelatedTimkeeperNumber As String)
Dim tmpArr() As String
Dim i As Integer
Dim sRelatedTimekeeperNumbersLength As Integer
sRelatedTimekeeperNumbersLength = ArrayCount(sRelatedTimekeeperNumbers)
ReDim tmpArr(1 To sRelatedTimekeeperNumbersLength) As String
For i = 1 To sRelatedTimekeeperNumbersLength
If i = sRelatedTimekeeperNumbersLength Then
tmpArr(i) = RelatedTimekeeperNumber
Else
tmpArr(i) = sRelatedTimekeeperNumbers(i)
End If
Next i
ReDim Preserve sRelatedTimekeeperNumbers(1 To ArrayCount(tmpArr))
sRelatedTimekeeperNumbers = tmpArr ' <- "Can't Reassign to array, despite ReDim'ing"
End Sub
Public Sub PrintRelatedTimekeeperNumbers()
Dim myArray() As Variant
Dim txt As String
Dim i As Long
myArray = sRelatedTimekeeperNumbers
For i = LBound(myArray) To UBound(myArray)
txt = txt & myArray(i) & vbCrLf
Next i
MsgBox txt
End Sub
Function ArrayCount(ByRef vArray As Variant) As Long
lArrayCount = UBound(vArray) - LBound(vArray) + 1
End Function
and My procedure to build the class is:
Sub Init_Timekeepers()
Dim oTimekeeper As New clsTimekeeper
Dim sTkID As String
oTimekeeper.TimekeeperNumber = "00089"
oTimekeeper.AddRelatedTimekeeperNumber ("00089")
sTkID = oTimekeeper.TimekeeperNumber
oTimekeeper.AddRelatedTimekeeperNumber ("00091")
oTimekeeper.AddRelatedTimekeeperNumber ("00092")
oTimekeeper.PrintRelatedTimekeeperNumbers
End Sub
Before setting array, I think I am ReDim'ing, however, the compiler throws and error at the commented line.
preserveanyway if you are going to write over the array? And another thing, use Dictionaries it saves hassle with arrays.dict.Add dict.Count, data, so the key is the count of the dict