- ベストアンサー
オプションボタン
昨日も質問させていただいたものです。 オプションボタンの使い方について質問があります。 コマンドボタン1つ、テキストボックスを1つ、ラベルを一つ、 フレームを二つ用意し、それぞれのフレームに3つずつオプションボタンを配置します(●フレームA、B●オプションA1、A2、A3、オプションB1、B2、B3とする)。 オプションA1~3には1~3年生というキャプションを、 オプションB1~3には1~3組というキャプションを設定します。 テキストに名前を打ちこんでコマンドボタンを押すと、 ラベルに(テキストが太郎の場合)"太郎は3年1組です" と表示されるようなものを作ろうと考えています。 コマンドボタンを使用せずに、オプションボタンのみで作ると Privat Sub OptionA1_Click() If OptionB2.Valrue=True Then Label1.Caption="" と言うような感じで何個も書けば良いと思うのですが、 これにをコマンドボタンで実行させようとすると方法がわかりません。 アドバイスお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、基本的な命令で書くとこんなかんじになると思います。 Private Sub CommandButton1_Click() Dim nen As String Dim kumi As String If TextBox1.Text = "" Then MsgBox ("氏名が入力されてません") Exit Sub End If If op1 = True Then nen = "1年" Else If op2 = True Then nen = "2年" Else If op3 = True Then nen = "3年" Else MsgBox ("年が指定されていません") Exit Sub End If End If End If If op4 = True Then kumi = "1組" Else If op5 = True Then kumi = "2組" Else If op6 = True Then kumi = "3組" Else MsgBox ("組が指定されていません") Exit Sub End If End If End If label1 = TextBox1.Text & "は" & nen & kumi & "です" End Sub
その他の回答 (2)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
仕様ではオプションボタンを6つ必要ですが、そのボタン全てにOp1~Op6までの名前を付けていては大変です。 質問でも書いてあった通り、このままではコーディングの時、一つ一つのボタンについてのTrue/Falseの調査ロジックが必要です。なので、Op1とOp2で済むようにしましょう。 コントロールを配列にしてしまうのです。 オプションボタンのプロパティに[Index]っていうのがありますよね?それを使用します。 以下の処理を手順どおりにデザインで行ってください。 フレーム1の中で・・・ 1.[Name]Option1を、[Index]を'0'にしてください。 2.[Name]Option2を、[Name]をOption1、[Index]を'1'にしてください。 3.[Name]Option3を、[Name]をOption1、[Index]を'2'にしてください。 [ フレーム2の中で・・・ 4.[Name]Option4を、[Name]をOption2、[Index]を'0'にしてください。 5.[Name]Option5を、[Name]をOption2、[Index]を'1'にしてください。 6.[Name]Option6を、[Name]をOption2、[Index]を'2'にしてください。 できたら、それぞれのキャプションを設定してください。 7.[Name]Option1・[Index]0を、[Caption]を'1年生' 8.[Name]Option1・[Index]1を、[Caption]を'2年生' 9.[Name]Option1・[Index]2を、[Caption]を'3年生' 10.[Name]Option2・[Index]0を、[Caption]を'1組' 11.[Name]Option2・[Index]1を、[Caption]を'2組' 12.[Name]Option2・[Index]2を、[Caption]を'3組' 13.コマンドボタンを用意してください[Name]Command1 で次のプログラムを実行してみてください Private Sub Command1_Click() Dim wkGAKUNEN As String '学年 Dim wkKUMI As String '組 With Me 'フレーム1(学年)についての調査 wkGAKUNEN = getSelectOptionButtonCaption(.Option1) If wkGAKUNEN = "" Then MsgBox "学年が選択されてない" Exit Sub End If 'フレーム2(組)についての調査 wkKUMI = getSelectOptionButtonCaption(.Option2) If wkKUMI = "" Then MsgBox "組が選択されてない" Exit Sub End If 'イミディエイトウィンドウへ出力 Debug.Print wkGAKUNEN & ":" & wkKUMI End With End Sub '【機能】コントロール配列のオプションボタンの中で選択されているボタンのキャプションを得る '【注意】制限として、オプションボタンはコントロール配列(インデックスを持つコントロール)であること Private Function getSelectOptionButtonCaption(inOptionButton As Object) As String Dim OpBtn As OptionButton For Each OpBtn In inOptionButton If OpBtn Then 'もし選択されていたら、その学年を記憶しループを抜ける getSelectOptionButtonCaption = OpBtn.Caption Exit For End If Next OpBtn End Function
お礼
レスありがとうございます。 私はまだ、配列とかループとかってのを 勉強してないので、チョト難しかったです。 でも、これからがんばります。 丁寧な回答ありがとうございました。
- ayucat
- ベストアンサー率12% (7/55)
# まず、これってVBですかね? >Privat Sub OptionA1_Click() ^ eがないのは入力ミスかな? >If OptionB2.Valrue=True Then ^ Valueですよね。 >Label1.Caption="" ここで、Label1を空文字列にすることって何か意図が あるのですか?
お礼
レスありがとうございます。 >まず、これってVBですかね? はい、そうです。書いてませんでしたね。すいません。 それにしてもタイプミスばかりで・・・・・・
お礼
レスありがとうございました。 初心者の私にもとてもわかりやすかったです。 これから一生懸命勉強します。 またよろしくお願いします。