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

Другие вопросы по тегам