Вы можете присвоить своим флажкам имена, отражающие их приоритет (например, «myCB1», «myCB2» и т. Д.), И напрямую получить их через Controls
collection:
Dim iCB As Long, counter As Long
Dim fund1 As String, fund2 As String, fund3 As String
With Me
For iCB = 1 To 5
With .Controls("myCB" & iCB)
If .Value Then
counter = counter + 1
If counter = 1 Then
fund1 = .Tag
ElseIf counter = 2 Then
fund2 = .Tag
ElseIf counter = 3 Then
fund3 = .Tag
End If
End If
End With
Next
End With
Более тогоструктура Select Case
может быть более читабельной:
Dim iCB As Long, counter As Long
Dim fund1 As String, fund2 As String, fund3 As String
With Me
For iCB = 1 To 5
With .Controls("myCB" & iCB)
If .Value Then
counter = counter + 1
Select Case counter
Case 1
fund1 = .Tag
Case 2
fund2 = .Tag
Case 3
fund3 = .Tag
End Select
End If
End With
Next
End With
Наконец, вы можете рассмотреть использование массива вместо трех переменных:
Dim iCB As Long, counter As Long
Dim funds(1 To 3) As String
With Me
For iCB = 1 To 3
With .Controls("myCB" & iCB)
If .Value Then
counter = counter + 1
funds(counter) = .Tag
End If
End With
Next
End With
и затем получить к ним доступ с помощью funds(1)
,funds(2)
и funds(3)