Если вы работаете с несколькими списками, вы должны придумать повторно используемый блок кода, который вы можете вызвать для любого списка + значение.
Что-то вроде:
Function SetByTextValue(lst as object, v as string) As Boolean
Dim a as long
For a = 0 To lst.Options.Length - 1
If lst.Options(a).Text = v Then
lst.selectedindex = a
SetByTextValue = True
Exit Function
End If
Next a
End Function
Тогда в вашем основном коде вы можете сделать что-то вроде:
If Not SetByTextValue(cats, "Option One") Then
'not found
Else
'...proceed with next list
End If