Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


41617 / 76732 ←次へ | 前へ→

【40194】Re:ユーザフォームのオプションボタン
発言  ichinose  - 06/7/8(土) 10:19 -

引用なし
パスワード
   ▼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

こんなコードで可能です。

検討してみて下さい

3 hits

【40191】ユーザフォームのオプションボタン Hi 06/7/8(土) 8:50 質問
【40194】Re:ユーザフォームのオプションボタン ichinose 06/7/8(土) 10:19 発言
【40204】Re:ユーザフォームのオプションボタン Hi 06/7/8(土) 22:22 お礼

41617 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free