MS Access Tips/Sample and VBA and Blog customize etc...

オプショングループ上の選択されたコントロール名あるいはその標題を返す関数

フォーム上にオプショングループのフレーム(フレーム1)があり、その中にオプションボタンが2つ、オプション1(オプション値: 1)、オプション2(オプション値: 2)があります。 選択されいてるコントロール名を取得したいのですがどうしたらいいでしょうか。

moug掲示板でこのような質問がありました。汎用的な関数を作成して回答しましたが、mougは一定期間が過ぎると消えてしまいますので、こちらに格納しておきます。

また、質問ではコントロール名の取得でしたが、標題(トグルボタン)または付属するラベルの標題(チェックボックス、オプションボタン)を返す関数も置いておきます。

難易度:

質問のような場合、普通に作ると、オプショングループの子コントロール(Controlsで参照可)は、

フレーム1.Controls(0) がフレームに付属するラベル
フレーム1.Controls(1) が最初のオプションボタン
フレーム1.Controls(2) が最初のオプションボタンに付属するラベル
フレーム1.Controls(3) が2つめのオプションボタン
フレーム1.Controls(4) が2つめのオプションボタンに付属するラベル

のようです。これが固定されているなら、例えばテキストボックスのコントロールソースを

=[フレーム1].[Controls]([フレーム1]*2-1).[Name]

とすれば選択されているコントロール名を表示できます。ラベルの標題なら、

=[フレーム1].[Controls]([フレーム1]*2).[Name]

となります。

ただ、オプション値を変更したりすると、それにあわせて式も変更する必要があります。

オプション値を変更しようが、オプションボタンやトグルボタンが混在していようが、どんな時でも汎用的に利用できる関数が下記です。

考え方は、For Each で子コントロールを順に調べていって、子コントロールのオプション値とオプショングループの値が一致するものを探すということです。


拍手する

2 Comments

石井 浩 says..."帳票フォームでオプショングループが各行で連動してしまう"

帳票フォームでオプショングループを使い2つのチェックボックスで「有る」「無い」を設置しましたが入力の際1行目2行目・・・が連動してしまい使いものになりません。対策を教えてください。

2013.01.08 09:13 | URL | #- [edit]
hatena says..."re: 帳票フォームでオプショングループが各行で連動してしまう"

遅いレスで申し訳ありません。
見てくれるといいのですが。

選択したチェックに応じてテキストボックスの表示を変更したいということでしょうか。

「有る」のオプション値を 1
「無い」のオプション値を 2
オプショングループの名前を Opt1 として、
テキストボックスのコントロールソースを下記のように設定してください。

=Choose([Opt],"有る","無い")

2013.04.07 16:44 | URL | #5uE6dEgY [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/355-665103c6
該当の記事は見つかりませんでした。