#641 オプションボタンの選択値から対応する文字列を返す方法 フォーム、VBA

Accessのフォームに「オプショングループ」コントロールを配置し、その中に「オプションボタン」コントロールをいくつか挿入していくと、その『オプション値』プロパティには自動的に1、2、3、・・・・というように連番が振られます。


このとき、あとからそのプロパティ値を変更することもできますが、それでも指定できるのはあくまでも”数値のみ”です。”文字列”を設定することはできません。

そこで、選択されたオプションボタンに応じて、それに対応した文字列を返す方法、しかもその文字列をプログラム上で設定するのではなく、各コントロールのプロパティ値(ここではプロパティシートで設定できる値という意味)を参照して返す方法を紹介します。


■オプションボタンに関連付けられたラベルの標題を利用した例

ここでは次のように複数のオプションボタンとそれぞれに関連付けられたラベルコントロールが配置されているとします。

オプショングループの名前:「オプション選択」
オプションボタンの名前:左から「opt1」、「opt2」、「opt3」
※ここではラベルコントロールの名前は何でもかまいません。

そして[実行]ボタンのクリック時のイベントプロシージャを次のように記述します。オプショングループの値から選択されたオプションボタンを取得、さらにそれに関連付けられたラベルコントロール「Controls(0)」の標題「Caption」を取得して表示しています。

Private Sub 実行_Click()
'[実行]ボタンのクリック時

  Dim intSelect As Integer
  Dim opt As OptionButton
  Dim strCaption As String

  '選択されたオプションボタンの値
  intSelect = Me!オプション選択

  'そのオプションボタンのコントロール
  Set opt = Me("opt" & intSelect)

  'そのオプションボタンに関連付けられたラベルの標題
  strCaption = opt.Controls(0).Caption

  'ラベルの標題をメッセージ表示
  MsgBox strCaption

  MsgBox Me("opt" & Me!オプション選択).Controls(0).Caption

End Sub

※ここでは、値を取得する過程を分かりやすくするため、何行か使って段階的に値を取得していますが、2つめのMsgBoxにあるように1行で記述してももちろんかまいません。

実行例:



■オプションボタンのタグプロパティを利用した例

ここでは複数のオプションボタンそれぞれについて、「タグ」プロパティに任意の文字列を設定しておくものとします。


そして[実行]ボタンのクリック時のイベントプロシージャを次のように記述します。

Private Sub 実行_Click()
'[実行]ボタンのクリック時

  'タグプロパティ値をメッセージ表示
  MsgBox Me("opt" & Me!オプション選択).Tag

End Sub


実行例:
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved