Private Function Reset(ByRef ls As Collection, ByVal k As String, ByVal v As Variant)
ls.Remove k
ls.Add Item:=v, Key:=k
End Function

Public Sub Test()
Dim list As New Collection
list.Add New Collection
list(1).Add New Collection
list(1)(1).Add Item:=123, Key:="key"
Reset list(1)(1), "key", 456
' Dim list_sub As Collection
' Set list_sub = list(1)
' Reset list_sub(1), "key", 456
MsgBox list(1)(1)("key")
End Sub

これが関数呼び出し時にエラーになるのは何故でしょう?
コメントアウト部の方を有効にするか、ByRefをByValにすると正しく動くので構わないんですが
もしかしてコレクションはByValで渡すのが当然とか?