動的に作成されたフレームを別の動的に作成されたフレームに追加するにはどうすればよいですか?Excel VBA動的フレームを別の動的フレームに追加
親フレームが機能の追加:子フレームを追加
Set c = UserForm1.Controls.Add("Forms.Frame.1", "newcontrol1", True)
は、エラーが発生します。
Set c = UserForm1.Controls("newcontrol1").Controls.Add("Forms.Frame.1", "newcontrol2", True)
子フレームは親の後に直接添加したので、私は必要とされていません後の段階で親フレームのControls
を参照/アクセスする方法(本質的に上の表現と同等の働きをする)。
...UserForm1.Controls("newcontrol1").Controls...
は、通常のフレームの場合は"newcontrol1"
となります。ダイナミックに作成されたコントロールは、通常のコントロールと同じ方法で参照することはできませんが、イベントとして標準で作成されるのではなく、動的に作成されたフレームでもControls
というプロパティが必要です。
私はこれまでこれをやっているように感じましたが、このオンラインの例は見つかりません。
ご協力いただければ幸いです。これは私のために働いた
Set c = UserForm1.Controls("newcontrol1").Add("Forms.Frame.1", "newcontrol2", True)
:
おかげで、この行を変更 氏はJ
'' newcontrol1 "'が動的に作成された場合、これは私にとってはまだ機能しません。あなたがそれを試みたときに動的なコントロールでしたか?私はあなたのコードを '' newcontrol1 ''で普通のコントロールとして試しました。**' .Controls'と**私の初期の** ** **コントロールの ''Controls''なしであなたの両方の方法** **で動作します。違い。 –
私は試してそれをテストし、それは私のために働いた、私はボタンをクリックして最初のフレームを作成し、別のボタンをクリックして2番目のを介して..? – Xabier
申し訳ありません。作成してからもう一方の直後に '.Controls'への参照を付けてもしなくても動作します。私の問題はもう少し複雑だと思う。最近作成されたフレームにのみ新しいフレームを '.Add'することができます。ビルドオーダーのために、すでに他の親フレームをいくつか追加した後、フレームにアクセスしようとしていました。私は今からビルドオーダーを変更しているので、子フレームが親に直ちに続き、これが機能するようです。それは、すべてを順番に構築する必要があることを意味します。私は確かにこれを行うより効率的な方法があります。 –