У меня есть пользовательская форма с 132 объектами управления. Пользователь заполняет форму, затем нажимает кнопку «Подтвердить», чтобы запустить макрос, который использует предоставленную информацию для принятия решений. Изображение ниже. Я написал оператор If, который проверяет: если имя не было введено вверху, не запускайте макрос; Если флажки не установлены, не запускайте макрос. Я обнаружил, что оператор If выполняет свою работу практически во всех комбинациях флажков и флажков; если он находит какой-либо один флажок, то он заканчивается для For L oop и продолжается макросом.
Вот ссылка на изображение моей пользовательской формы:
Вот выражение качества, если утверждение, строка ** помечается звездочкой, когда я получаю сообщение об ошибке:
Dim cCont As Control
Dim datacheck As Boolean
datacheck = False
If ProductName.Value <> "" Then
For Each cCont In AddNewPage.Controls
**If TypeName(cCont) = "CheckBox" And cCont.Value = True Then**
datacheck = True
Exit For
End If
Next cCont
End If
If datacheck = True Then
'very long, hopefully unrelated macro
Else
MsgBox ("Please name the part, then click at least one" & Chr(13) & "checkbox. These are _
the parameters to be audited.")
End If
Проблема заключается в том, что если я отмечаю только флажки из группы из трех в нижней части я получаю сообщение об ошибке 438. Во время выполнения я не получаю сообщение об ошибке, если я ставлю только флажки из верхней группы или если я устанавливаю флажки как из верхней, так и из нижней групп, но только если я отмечаю только флажки снизу group.
Я не могу определить разницу между флажками вверху и флажками внизу. Все свойства кажутся одинаковыми, поэтому я не знаю, почему один флажок выдает ошибку, а другой - нет.