Я не уверен, как строка кода, которую вы представили, сгенерирует ошибку sub or function not defined
. Скорее, вы должны были получить ошибку Argument not optional
. Синтаксис этой строки должен был выглядеть следующим образом:
a = IIf(Check1(0).Value = vbChecked, "OK", "")
Если я понимаю ваши требования, вы МОЖЕТЕ использовать IIf
следующим образом:
a = IIf(Check1(0).Value = vbChecked, "OK", IIf(Check1(1).Value = vbChecked, "X", IIf(Check1(2).Value = vbChecked, "[X]", IIf(Check1(3).Value = vbChecked, "NP", ""))))
Однако я бы не рекомендовал этот подход. Вместо этого я бы структурировал код следующим образом:
If Check1(0).Value = vbChecked Then
a = "OK"
ElseIf Check1(1).Value = vbChecked Then
a = "X"
ElseIf Check1(2).Value = vbChecked Then
a = "[X]"
ElseIf Check1(3).Value = vbChecked Then
a = "NP"
Else
a = ""
End If
Да, кода немного больше, но код легче читать и легче поддерживать.