Этого код перебирает через все листы (кроме листов названных Sheet100
и OtherSheet
) и неустановленных всех ваших ActiveX
флажков с именем CheckBox1
Sub uncheck_boxes()
Dim ws As Worksheet
Dim xbox As OLEObject
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Sheet100" And ws.Name <> "OtherSheet" Then
For Each xbox In ws.OLEObjects
ws.OLEObjects("CheckBox1").Object.Value = False
Next
End If
Next
End Sub
Чтобы снять все ActiveX
флажков во всех листах, не считая имен нас ред
Sub uncheck_all_ActiveX_checkboxes()
Dim ws As Worksheet
Dim xbox As OLEObject
For Each ws In ThisWorkbook.Worksheets
For Each xbox In ws.OLEObjects
ws.OLEObjects(xbox.Name).Object.Value = False
Next
Next
End Sub
Чтобы снять все Form Control checkboxes
на таблицу использовать
Sub uncheck_forms_checkboxes()
Dim ws As Worksheet
Dim xshape As Shape
For Each ws In ThisWorkbook.Worksheets
For Each xshape In ws.Shapes
If xshape.Type = msoFormControl Then
xshape.ControlFormat.Value = False
End If
Next
Next
End Sub
Спасибо вам за помощь. Что-то довольно странное: это работает для двух листов, для которых я создал поля вручную; однако он не работает для последующих листов, для которых я просто скопировал флажки и код VBA. Я проверил несколько раз, и имя этих элементов идентично имени, которое я создал вручную. Я действительно не понимаю, почему это не сработает? Создание всех ящиков вручную невозможно, так как у меня слишком много листов для этого. Большое спасибо за вашу помощь. – jcv
@jcv я вижу. Держу пари, что-то действительно простое, вы каким-то образом упустили человека. откройте новую книгу и попробуйте вручную создать несколько флажков и скопируйте их на другие листы. затем запустите этот код и увидите поведение. я тестировал на своей машине, и все работает нормально. В вашем случае поставьте несколько строк 'Debug.Print', чтобы увидеть, действительно ли вы выполняете итерации по всем листам, всем флажкам и т. Д. –
Mehow, спасибо человеку. Я сделал некоторый анализ и наткнулся на новую ошибку - см. Мой обновленный основной пост. Когда я запускаю ваш код VBA, я получаю сообщение об ошибке в коде CheckBox @ Case False [...] ActiveSheet.Shapes и т. Д. Можете ли вы посмотреть, пожалуйста? – jcv