|
▼Hi さん:
おはようございます。
>ユーザーフォーム上オプションボタンを8ケ作っています。
>それぞれのボタンが押されたとき、Msgboxで表示したいのですが・・・
>
>下のコードのClickを使うと8ケのコードになってしまいます。
>Private Sub OptionButton5_Click()
> MsgBox "オプションボタンの 5 が選択されました"
>End Sub
>
>8ケのコードを1ケのコードに出来ないか・・・
>変数を使いChangeで作成できないか検討してコードを書きましたが
>上手く行きません。下のコードのどこが問題かアドバイスお願いします。
下のコードで
オプションボタンの選択を変えたときに
「xxが選択されました」
とメッセージが表示されない
ということですか?
それは、そうでしょうねえ!!
「OptionButton_Change」
というイベントはオプションボタンにはありませんから、
オプションボタンの変更で下のコードは実行されません。
>Private Sub OptionButton_Change()
> Dim i As Integer
> For i = 1 To 8
>Select Case i
> Case 1 To 8
> MsgBox Controls("OptionButton" & i) & "が選択されました"
> Next i
>End Select
>End Sub
対処1
クラスモジュールを使用する方法です。
過去ログを「クラスモジュール」で調べて見てください。
対処2
仕様を変更する。
「オプションボタンを変更した時点でメッセージを表示するのではなく、
オプションボタンを変更し、コマンドボタンをクリックした時点で
メッセージを表示する に変更する」
という方法です。
これなら、
コマンドボタン(Commandbutton1)を配置すれば、
Private Sub CommandButton1_Click()
Dim i As Long
For i = 1 To 8
If Controls("optionbutton" & i).Value Then
MsgBox i & "が選択されました"
Exit For
End If
Next
End Sub
こんなコードで可能です。
検討してみて下さい
|
|