| 
    
     |  | トムコ さん、おはようございます。 
 
 >If OpB1.Value = True Then  'オプションボタン1にチェックがあるとき
 >  ST = 1: ReT = 4     ’シート1、列Dを選択
 >ElseIf OpB2.Value = True Then
 >  ST = 1: ReT = 7
 >ElseIf OpB3.Value = True Then
 >  ST = 1: ReT = 10
 >ElseIf OpB4.Value = True Then
 >  ST = 1: ReT = 13
 >ElseIf OpB5.Value = True Then
 >  ST = 1: ReT = 16
 >ElseIf OpB6.Value = True Then
 >  ST = 1: ReT = 19
 >ElseIf OpB7.Value = True Then
 >  ST = 1: ReT = 22
 >ElseIf OpB8.Value = True Then
 >  ST = 1: ReT = 25
 >ElseIf OpB9.Value = True Then
 >  ST = 1: ReT = 28
 >       ・
 >       ・
 >       ・
 >End If
 >  記録 ’
 >End Sub
 ↑この分岐方法だと、ページ1でチェックが入っているものがあるとそれ以外のページでチェックが入っても無効になります(OpのNoの若いものが常に有効)。
 
 そのフォームにCommandButton2を置いて以下のマクロを記述し、適当にチェックをつけた後にクリックしてみてください。
 Private Sub CommandButton2_Click()
 Dim obj As Object
 For Each obj In Me.Controls
 If TypeName(obj) = "OptionButton" Then
 MsgBox obj.Value & vbCrLf & obj.Parent.Name, vbInformation, obj.Name
 End If
 Next
 End Sub
 
 ページ1〜5まであるとして、
 ・5つとも選ぶ(最大5つ○が入る)
 ・現在表示されているページのものだけ有効(○は一つ)
 どちらでしょうか?
 
 5つとも選ぶ場合は、上記のようにループでチェックの入ったものを取得し○、1つだけなら、Parent.Nameでページ位置を判定してそこに○・・・という漢字でしょうか。
 
 |  |