Массив флажков со строкой - PullRequest
0 голосов
/ 02 марта 2020

Мне нужна помощь по использованию массива флажков, если флажок установлен, значение будет:

check1(0) = OK ,check1(1) = X,check1(2) = [X],check1(3) = NP
a=iif(check1(0).Value = vbchecked,"OK")

Получение ошибки:

"Error sub or function not defined"

1 Ответ

1 голос
/ 02 марта 2020

Я не уверен, как строка кода, которую вы представили, сгенерирует ошибку 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

Да, кода немного больше, но код легче читать и легче поддерживать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...