When you pass a read-writable property directly as a ByRef parameter to a function or subroutine, the property will not be changed. This is because in VB 6.0 or previous versions, the parameter will be copied to stack as specified data type, but the object is not referenced. Try the following example:
Sub Test() Dim oMyObj As CMyClass Set oMyObj = New CMyClass Call GetName(oMyObj.MyName) ' oMyObj.MyName will be empty string. Debug.Print