クラスモジュールは、あくまでも「型」を定義するものです。
なので、たとえば、内部で frmMain を直接参照したりするようなコーディングは、できるだけ避けます。
Public Sub Output()
'frmMain のテクストボックスに出力する
frmMain.txtOutput.Text = m_strOutput
End Subこういう場合は、面倒でも、引数やプロパティに対象となるオブジェクトを渡すようにします。
Public Sub Output(ByRef Target As TextBox)
'Target に出力する
Target.Text = m_strOutput
End Sub
↑↓
Call obj.Output(frmMain.txtOutput)このことはクラスメンバに限った話ではありません。
プロシージャの内部では、できるだけモジュールに依存しないコードを書きます。
必要なデータは引数から得るようにします。
引数は、その変数の役割を示します。
いきなり frmMain.txtOutput なんかが出てきても、解読する人はそれを探さなければなりません。メソッドを呼び出すときに引数として txtOutput を渡していれば、プロシージャ内で迷うことは少なくなるでしょう。
また、こうすることで、モジュールの部品化や整理もしやすくなります。
今まで全く気にしていなかった人は、試してみてください。