Я в Excel, у меня около 30 флажков UserForm, каждый из которых расположен на странице под названием «Сводка» в большом столбце. Каждый из которых соответствует листу. Я пытаюсь перебрать эти флажки, чтобы увидеть, какие из них отмечены, а какие нет. Я поместил некоторый код в цикл всех таблиц, этот бит не работает:
Private Sub Run_Click()
Dim SummaryFirstBlankRow As Integer
Dim LastRow As Integer
Dim LastRowH As Integer
Dim rng As Range
Dim SumOfHours As Variant
Dim EndLoop As Boolean
Dim DupeRowNo As Integer
Dim RowNo2 As Integer
Dim ClearContent As Boolean
Dim cbtrue As Boolean
Dim ws As Worksheet
cbtrue = False
For Each ws In ActiveWorkbook.Worksheets
LastRowH = ws.Cells(Rows.Count, 8).End(xlUp).Offset(1, 0).Row
'If ActiveWorkbook.Sheets("Summary").CheckBoxes(ws.name).Value = False Then ' looks to see if ws.names' checkbox is checked or not
' ClearContent = True 'if not checked, sets clear content to true
'End If
For Each CheckBox In Sheets("Summary").CheckBoxes
If CheckBox.name = ws.name Then
If CheckBox.Value = False Then
ClearContent = True
End If
End If
Next CheckBox
If ClearContent = True Then
For c = 1 To LastRowH 'if not checked, looks on current worksheet (within loop) and if any "Y" or "y" vals, clears them
If ws.Range("H" & c).Value = "Y" Or ws.Range("H" & c).Value = "y" Then
ws.Range("H" & c).ClearContents
End If
Next
End If
...
cbtrue - это просто переменная, чтобы увидеть, существует ли флажок, следовательно, если он это сделает, он перейдет к оператору if, после чего он будет определять, отмечен ли этот флажок или нет, в зависимости от этого он сохраняет переменную ClearContent. (который я использую позже в коде).
Проблема в том, что когда дело доходит до «Shapes (« ws.Name »)», ws.name - это просто имя рабочего листа в каждом цикле. Так что в первом раунде цикла это будет «Сводка» ... Однако я думаю, что он физически ищет лист «ws.name», который, очевидно, не существует. Я попытался удалить его из кавычек, а также различных других методов, таких как «Флажки (" ws.Name ")", но, похоже, у них всех одна и та же проблема.
Я отправляю сообщение, чтобы узнать, может ли кто-нибудь предложить мне другой метод или, возможно, показать мне, где я ошибся, поскольку я думаю, что не до конца понимаю синтаксис.
Любая помощь приветствуется. Заранее спасибо:)
UPDATE
Я изменил код с помощью @Xabier (я добавил дополнительный оператор if, чтобы убедиться, что CheckBox имеет то же имя, что и рабочий лист. Теперь я не получаю ошибок, но когда я его запускаю, он не очищает содержимое ни одной из ячеек, которые я запрашивал. Кажется, я не могу понять, почему он это делает. Если кто-то сможет это заметить и сообщить мне, это было бы здорово. Спасибо :)