2016-10-21 1 views
0

я нашел возможный ответ на мой вопрос о том, как это сделать hereVB - Непроверка флажков в коробке Группа: Ответ не работает

Однако код из этого вопроса:

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 

Производит ошибку «Ошибка компиляции: синтаксическая ошибка». Любая помощь оценивается

+1

Вы используете XObject вместо ChkBox в разделе 'If TypeOf ...'. xObject не объявлен. Отредактируйте свой для каждого, чтобы он снова произносил «Для каждого xObject», и он будет работать. В приведенном ниже комментарии потребуется, чтобы ChkBox включил CheckBox, чтобы снова получить доступ к его свойствам. – aaroncatlin

+0

Не должен 'If TypeOf xObject - это CheckBox Then' be' Если TypeOf ChkBox является CheckBox Then'. Также вам не нужно объявлять его вверху. – Bugs

ответ

3

Согласно моему комментарию. Переключите код:

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

+0

дает «синтаксическую ошибку» в первой строке? – Trevesy

+0

Удостоверьтесь, что вы поместили суб в классе или модуле. – aaroncatlin

3

Вот решение, которое использует OfType удалить необходимость проверки типа объекта каждый раз, когда

For Each ChkBox As CheckBox In Worksheets("Check sheet").Report_Checks.Controls.OfType(Of CheckBox) 
    ChkBox.Checked = False 
Next 
+0

дает синтаксическую ошибку в первой строке? – Trevesy

+0

Если у вас по-прежнему есть этот «Dim ChkBox As CheckBox = Nothing» рядом с «Для каждого объекта ChkBox как объект в рабочих листах (« Check sheet »). Report_Checks.Controls« Тогда да, у вас все еще будет ошибка. –