Following your approach, and stealing a little from Sam
You could use a Options class With Events, but this is a little more straight forward
Option Explicit
Dim aryOB() As msForms.OptionButton
Dim r As Range
Private Sub Userform_Initialize()
Dim t As Long ' Top of OPtion Button
Dim r1 As Range
With Sheet8
Set r = Range(.Range("A36"), .Range("A36").End(xlDown))
ReDim aryOB(36 To 36 + r.Rows.Count - 1)
End With
t = 119 ' top of First Option Button
For Each r1 In r.Cells
Set aryOB(r1.Row) = Controls.Add("Forms.OptionButton.1")
With aryOB(r1.Row)
.Caption = r1.Value
.Height = 18
.Width = 120
.Left = 130
.Top = t
.Font.Size = 12
End With
t = t + 19
Next
End Sub
Private Sub CBPtoceed_Click()
Dim i As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = LBound(aryOB) To UBound(aryOB)
If aryOB(i) Then
MsgBox "Selected " & aryOB(i).Caption
Exit Sub
End If
Next i
MsgBox "Nothing Selected"
End Sub