MyClassの中

Private m_Hoge As Long
Public property Let Hoge(ByVal value As Long)
m_Hoge = value
End Ploperty
Public property Get Hoge() As Long
Hoge = m_Hoge
End Property

Public Function GetClone() As MyClass
Dim clone as New MyClass
Clone.Hoge = 1
Set Getclone = clone
End function

俺が言いたいのは、Public指定でもこれで要件が満たせるから何を大いに困ることがあるのかと言うことなんだけど。

このクラスを生成したとき、Hogeには0が入っているがGetCloneで取得したときには1が入る。
他も自分自身から取得して、自分の中で生成したインスタンスのプロパティに設定すればそのままの値となるわな。

別にPublic指定で、今回の件について困るとは思えない。