VB - снятие флажков в группе: ответ не работает
Я нашел возможный ответ на мой вопрос о том, как это сделать здесь
Однако код из этого вопроса:
Sub UnCheckBoxes()
Dim ChkBox As CheckBox = Nothing
' to unchecked all
For Each ChkBox As Object In Worksheets("Check sheet").Report_Checks.Controls
If TypeOf xObject Is CheckBox Then
ChkBox = xObject
ChkBox.Checked = False
End If
Next
End Sub
Создает "Ошибка компиляции: синтаксическая ошибка". Любая помощь приветствуется
2 ответа
Вот решение, которое использует OfType для устранения необходимости каждый раз проверять тип объекта
For Each ChkBox As CheckBox In Worksheets("Check sheet").Report_Checks.Controls.OfType(Of CheckBox)
ChkBox.Checked = False
Next
Согласно моему комментарию. Переключите ваш код на:
Sub UnCheckBoxes()
Dim ChkBox As CheckBox = Nothing
' to unchecked all
For Each xObject As Object In Worksheets("Check sheet").Report_Checks.Controls
If TypeOf xObject Is CheckBox Then
ChkBox = xObject
ChkBox.Checked = False
End If
Next
End Sub
Объект xObject используется в качестве универсального класса для циклического прохождения всех ваших элементов управления в Report_Checks. Затем оператор If проверяет, имеет ли xObject тип CheckBox. Затем ChkBox устанавливается на xObject, чтобы вы могли получить доступ к его свойствам CheckBox и назначить .Checked = False