問題を再現できません。また、SolidWorks が何かもわかりません。それが何か関係している可能性があります。おそらく、Initialize が 2 回呼び出されていることを示す作成例を投稿できます。
私の推測では、自動インスタンス化変数に関連していると思います。UserForm1 を使用すると、UserForm1 とも呼ばれるオブジェクトを指す UserForm1 というオブジェクト変数をインスタンス化します。Dim ステートメントで New キーワードを使用するのと似ています。UserForm1 (変数) を定義したことはありませんが、VBA は定義しており、初めて使用すると、自動的にインスタンス化されます。
ユーザー フォーム クラス モジュール内で作業する場合は、Me キーワードを使用するようにしてください (ユーザー フォームは、ユーザー インターフェイス要素があることを除いて、他のオブジェクトと同様のクラスです)。Initialize イベントで、次のように言います。
Me.Caption = "blah"
それ以外の
UserForm1.Caption = "blah"
Caption プロパティを変更するまでに、「私は実際のインスタンスを指している」と言うように設定されたフラグが設定されていない可能性があります (私が証明できなかった理論にすぎません)。自動インスタンス化変数 UserForm1 を使用すると、別のインスタンス化が強制されます。
さらに良いことに、自動インスタンス化変数は便利ですが使用しないでください (また、Dim ステートメントで New キーワードを使用しないでください)。変数をいつ作成および破棄するかを制御できます。これはベスト プラクティスです。標準モジュールでこのようなもの
Sub uftst()
Dim uf As UserForm1
Set uf = New UserForm1 'you control instantiation here
'Now you can change properties before you show it
uf.Caption = "blech"
uf.Show
Set uf = Nothing 'overkill, but you control destruction here
End Sub
ShowModal プロパティが False に設定されている場合、コードは引き続き実行されるため、モードレスで実行している場合は変数を破棄しないでください。