即効テクニック |
テクニック集”フォームとコントロールの活用 − 1つのフォームを使いまわす”などにもあるように、フレームは他のコントロールのコンテナとなることができます。 ※”コンテナ”とは、コントロールを配置する土台のようなものです。 フレーム内に配置したコントロールは・・・
Frame1.Controls.Count
のように、各コントロールにアクセスすることができます。この”Frame1.Controls 〜”という記述法を利用すると、例えばフォーム上のコントロールをフレームによっていくつかのグループに分けて部分転記を行ったりすることができます。 (ユーザフォーム上のコントロール構成例) フォーム上のコントロール :フレーム1、コマンドボタン フレーム1上のコントロール :テキストボックス×3 というような構成の場合にテキストボックスからワークシートへ転記を行うには、フレーム外に配置したコマンドボタンのクリックイベントで以下のサンプルのように記述します。
Private Sub CommandButton1_Click() Dim i As Integer For i = 1 To Frame1.Controls.Count Sheet1.Cells(1, i).Value = Frame1.Controls(i-1).Value Next End Sub
上記の構成で、フレーム外にコントロールが配置してあっても、”Frame1.Controls(i)”としているため、Frame1をコンテナとするコントロールのみ転記されることになります。また、Valueプロパティーを持たないコマンドボタンはフレーム外にだすことで、ループ構造による転記の際でも考慮に入れる必要がなくなります。その他のコントロールもフレーム内に配置して試してみてください。 ※フレーム内に配置したコントロールのタブオーダーについて ⇒ ユーザフォームのデザイン画面で対象となるフレームを選択し、右クリックによるショートカットメニューから”タブオーダー”を選択します。フレームを選択していないと、ユーザフォーム全体を対象としたタブオーダーの設定になり、Frame内に配置したコントロールは設定できません。