テクニック集”フォームとコントロールの活用 − 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内に配置したコントロールは設定できません。
|