• ベストアンサー

3つのオプションボタンの場所によって分岐させるselect文

3つのうち一つしか選べないオプションボタンのチェックした場所によってテキストボックスに数字を表示させる文を書きたいのですがどのようにselect case 文を書いていけばよいのでしょうか? ・3つともボタンのオブジェクト名(opt)は同じです。indexプロパティは1,2,3にしています。 select case index case 1 label.caption = 1 case 2 label.caption = 2 case 3 label.caption = 3 End select 上記ではうまくいきませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

質問のcaseによる分岐ですが、、、、 ※1.optのクリックイベントで処理を行っているのですか? ※2.それとも、別のボタンなどのタイミングで、処理を行おうとしているのですか? ※1ならそのままできるような気がするのですが、、、 もしそうなら、もう少し前後のソースの公開が必要です。 ※2なら、opt_clickイベントで opt(1).Tag=Index としておいて、必要なタイミングで label.caption = opt(1).Tag としてあげたら、すべてのオプションボタンをチェックする必要がなくなります。

DINO-PIE
質問者

お礼

if 文でできました。ありがとうございました。

その他の回答 (1)

  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.2

どこでもOKな書き方だと select case true case opt(1).value label.caption = 1 case opt(2).value label.caption = 2 ・・・ のようになりますね。 #1さんが書かれておられるように、オプションボタンのClickイベントだとIndexが渡されてくるので、 質問コードそのままで動作するはずなんですが。 あとは Dim i As long For i=1 to 3'For i=opt.Lbound to opt.Ubound とすべきですが if opt(i).value then exit for next i Select case i case 1 ・・・ なんかでしょうか。 もっといえば、この場合Select~Caseで分岐する必要は全く無く Dim i As long For i=1 to 3'For i=opt.Lbound to opt.Ubound とすべきですが if opt(i).value then label.caption = cstr(i) exit for end if next i のようにしても同じ動作になります。

DINO-PIE
質問者

お礼

オプションボタンでは処理を行わずにできました。selectはいりませんでした。ありがとうございました。

関連するQ&A