Excel VBA質問箱 IV

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

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


4630 / 13644 ツリー ←次へ | 前へ→

【55444】例示がおかしかったです。すみません。 みけ 08/5/4(日) 16:42 回答[未読]
【55446】質問、回答の仕方にきを気をつけて下さい Hirofumi 08/5/4(日) 17:02 発言[未読]
【55454】:こんな方法ですか Hirofumi 08/5/4(日) 21:50 回答[未読]
【55478】Re::こんな方法ですか みけ 08/5/6(火) 14:57 発言[未読]
【55482】Re::こんな方法ですか Hirofumi 08/5/6(火) 16:47 回答[未読]
【55495】Re::こんな方法ですか みけ 08/5/7(水) 22:05 お礼[未読]

【55444】例示がおかしかったです。すみません。
回答  みけ  - 08/5/4(日) 16:42 -

引用なし
パスワード
   久しぶりに利用したのでおかしくなってしまいました。
すみません。
贅沢をいって申し訳ないのですが、入力結果をチッェクする上からフォームの上ぐらいの一ヵ所にまとめてyesの回答の問いの番号を表示させたいと考えています。
チッェクボックスでのは前記のような形で出来ているのですが、オプションボタンのはまだ形になっていません。チッェクボックスのものを応用すればオプションボタンもできると思っていたのですが甘かったようです。

【55446】質問、回答の仕方にきを気をつけて下さい
発言  Hirofumi  - 08/5/4(日) 17:02 -

引用なし
パスワード
   前回の質問、回答の下に就くようにレスをつけて下さい
常に新規の質問として書くと、誰が何を回答しているのか解りません

【55454】:こんな方法ですか
回答  Hirofumi  - 08/5/4(日) 21:50 -

引用なし
パスワード
   FuserFormにFrame1〜3を配し、各FrameのCaptionを「問1」、「問2」、「問3」とします
各Frameの中に、「Yes」、「No」のCaptionを持つ2つのOptionButtonを配置します
UserFormの適当な位置にLabel1を配置します

Option Explicit

Private Sub OptionButton1_Click()

  GetAnswer OptionButton1
  
End Sub

Private Sub OptionButton2_Click()

  GetAnswer OptionButton2
  
End Sub

Private Sub OptionButton3_Click()

  GetAnswer OptionButton3
  
End Sub

Private Sub OptionButton4_Click()

  GetAnswer OptionButton4
  
End Sub

Private Sub OptionButton5_Click()

  GetAnswer OptionButton5
  
End Sub

Private Sub OptionButton6_Click()

  GetAnswer OptionButton6
  
End Sub

Private Sub GetAnswer(cntOption As MSForms.OptionButton)

  Dim i As Long
  Dim strResult As String
  
  With cntOption
    .Parent.Tag = .Caption
  End With
  
  For i = 0 To Controls.Count - 1
    If TypeName(Controls(i)) = "Frame" Then
      If StrComp(Controls(i).Tag, "Yes", vbTextCompare) = 0 Then
        If strResult <> "" Then
          strResult = strResult & ","
        End If
        strResult = strResult & Controls(i).Caption
      End If
    End If
  Next i
  
  Label1.Caption = strResult
  
End Sub

【55478】Re::こんな方法ですか
発言  みけ  - 08/5/6(火) 14:57 -

引用なし
パスワード
   Hirofumi 様
教えていただいた方法で出来ました。
ありがとうございました。
大変助かりました。
もう一つ教えていただけないでしょうか。
問1〜問10まであって、yesの回答の問いのナンバーを
問1〜問5の範囲の物はラベル1に問6〜問10はラベル2に表示させるとしたらどのようにしたらよいのでしょうか
図々しくってすみませんがご教授ください。

【55482】Re::こんな方法ですか
回答  Hirofumi  - 08/5/6(火) 16:47 -

引用なし
パスワード
   FuserFormにFrame1〜10を配し、各FrameのCaptionを「問1」、「問2」・・「問10」とします
また、Frameのオブジェクト名は、Frame1〜10とします
各Frameの中に、「Yes」、「No」のCaptionを持つ2つのOptionButtonを配置します
UserFormの適当な位置にLabel1、Label2を配置します

Option Explicit

Private Sub OptionButton1_Click()

  GetAnswer OptionButton1
  
End Sub

Private Sub OptionButton2_Click()

  GetAnswer OptionButton2
  
End Sub

 ・
 ・
Private Sub OptionButton19_Click()

  GetAnswer OptionButton19
  
End Sub

Private Sub OptionButton20_Click()

  GetAnswer OptionButton20
  
End Sub

Private Sub GetAnswer(cntOption As MSForms.OptionButton)

  Const clngGroup As Long = 5
  
  Dim i As Long
  Dim strResult As String
  Dim strName As String
  Dim lngNumb As Long
  
  With cntOption
    .Parent.Tag = .Caption
    strName = .Parent.Name
  End With
  
  'フレームの番号を取得してグループ番号に変換(5問づつ)
  lngNumb = (CLng(Mid(strName, 6)) - 1) \ clngGroup
  
  For i = 0 To Controls.Count - 1
    If TypeName(Controls(i)) = "Frame" Then
      '変更されたGroupを集計
      If (CLng(Mid(Controls(i).Name, 6)) - 1) \ clngGroup = lngNumb Then
        If StrComp(Controls(i).Tag, "Yes", vbTextCompare) = 0 Then
          If strResult <> "" Then
            strResult = strResult & ","
          End If
          strResult = strResult & Controls(i).Caption
        End If
      End If
    End If
  Next i
  
  'GroupのLabelに代入
  Controls("Label" & (lngNumb + 1)).Caption = strResult
  
End Sub

【55495】Re::こんな方法ですか
お礼  みけ  - 08/5/7(水) 22:05 -

引用なし
パスワード
   Hirofumi さん
ありがとうございました。
大変助かりました。

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