dポイントプレゼントキャンペーン実施中!

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

上記ではうまくいきませんでした。

A 回答 (2件)

質問のcaseによる分岐ですが、、、、


※1.optのクリックイベントで処理を行っているのですか?
※2.それとも、別のボタンなどのタイミングで、処理を行おうとしているのですか?

※1ならそのままできるような気がするのですが、、、
もしそうなら、もう少し前後のソースの公開が必要です。

※2なら、opt_clickイベントで
opt(1).Tag=Index
としておいて、必要なタイミングで
label.caption = opt(1).Tag
としてあげたら、すべてのオプションボタンをチェックする必要がなくなります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/08 21:03

どこでも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

のようにしても同じ動作になります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/06/08 21:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!