2017-12-12 39 views
0

動的に作成されたフレームを別の動的に作成されたフレームに追加するにはどうすればよいですか?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

答えて

0

Set c = UserForm1.Controls("newcontrol1").Controls.Add("Forms.Frame.1", "newcontrol2", True) 

をするには。問題はあなたがコントロールを2回使用したという事実だと私は信じています。

+0

'' newcontrol1 "'が動的に作成された場合、これは私にとってはまだ機能しません。あなたがそれを試みたときに動的なコントロールでしたか?私はあなたのコードを '' newcontrol1 ''で普通のコントロールとして試しました。**' .Controls'と**私の初期の** ** **コントロールの ''Controls''なしであなたの両方の方法** **で動作します。違い。 –

+0

私は試してそれをテストし、それは私のために働いた、私はボタンをクリックして最初のフレームを作成し、別のボタンをクリックして2番目のを介して..? – Xabier

+0

申し訳ありません。作成してからもう一方の直後に '.Controls'への参照を付けてもしなくても動作します。私の問題はもう少し複雑だと思う。最近作成されたフレームにのみ新しいフレームを '.Add'することができます。ビルドオーダーのために、すでに他の親フレームをいくつか追加した後、フレームにアクセスしようとしていました。私は今からビルドオーダーを変更しているので、子フレームが親に直ちに続き、これが機能するようです。それは、すべてを順番に構築する必要があることを意味します。私は確かにこれを行うより効率的な方法があります。 –

関連する問題