Как указано в комментариях, одна из проблем с вашим кодом заключается в том, что ваши самые внутренние If
операторы должны быть записаны:
If Me.lstDiagnosis.Selected(i) Then
comp = Me.lstDiagnosis.List(i, 0): isFirst = True
Else
If Me.lstDiagnosis.Selected(i) Then
comp = comp & " vs. " & Me.lstDiagnosis.List(i, 0)
End If
End If
Или используя ElseIf
:
If Me.lstDiagnosis.Selected(i) Then
comp = Me.lstDiagnosis.List(i, 0): isFirst = True
ElseIf Me.lstDiagnosis.Selected(i) Then
comp = comp & " vs. " & Me.lstDiagnosis.List(i, 0)
End If
Однако я бы лично предложил использовать свойство ItemsSelected
, чтобы вам нужно было перебирать только элементы, выбранные пользователем, а не весь набор данных:
Dim var As Variant
Dim rtn As String
If OptCompare Then
For Each var In lstDiagnosis.ItemsSelected
rtn = rtn & " vs. " & lstDiagnosis.ItemData(var)
Next var
If rtn <> "" Then rtn = Mid(rtn, 6)
End If