動的配列から Collection へ

いろいろな方法がある中で、今回は型チェックができて実装が簡単な Collection をメンバーにもつクラスを作成することにしました。元のコードは

Public Type MyType
  Name As String
  Datum As String
  Value As Long
End Type

' Dim ary() As MyType と宣言して
' ary(n).Name
' ary(n).Value と扱える

のような感じのコードでした。これを、

Private Names As Collection
Private Data As Collection
Private Values As Collection

Private Sub Class_Initialize()
  Set Names = New Collection
  Set Data = New Collection
  Set Values = New Collection
End Sub

Private Sub Class_Terminate()
  Set Names = Nothing
  Set Data = Nothing
  Set Values = Nothing
End Sub

Public Sub Add(Name as String, Datum as String, Value As Long)
  Names.Add Name
  Data.Add Datum
  Values.Add Value
End Sub

Public Property Get Item(Index as Long) as MyType
  MyType.Name = Names(Index)
  MyType.Datum = Data(Index)
  MyType.Value = Values(Index)
ENd Property

' Item がデフォルトプロパティならば
' col(n).Name
' col(n).Value と、動的配列と同じ書式で扱えるはず

のように書き換えたかったのですが、MyType を戻り値にできないというエラーの内容が理解できず、解決策を調べる時間が惜しいので

Public Property Get Name(Index as Long) as String
  Name = Names(Index)
ENd Property

Public Property Get Value(Index as Long) as Long
  Name = CLng(Values(Index))
ENd Property

' ary(n).Name のかわりに col.Name(n)
' ary(n).Value のかわりに col.Value(n) と書く必要がある

と、消極的な対処にしてしまい、多少の肉付けをして動的配列からコレクションへと移行完了しました。
蛇足ですが、Data は Datum の複数形ですので、Datas などと書いていると、いつか笑われてしまう日が来る……らしいです。
今の仕事環境には辞書が入ってないので、変数名や関数名に英単語を使うときにはスペルミスなどをあとからツッコミいれられるのがちょっと怖いです(苦笑)