| 
    
     |  | 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
 
 |  |