Страницы: 1
RSS
Очистка чекбоксов и диапазонов с проверкой данных при открытии книги
 
Здравствуйте. Задача1: чтобы при очередном открытии документа чек-боксы всегда были "выключены", независимо от того в каком состоянии они находились при сохранении и закрытии документа.
Задача 2: такая же задача к выпадающим спискам: чтобы при очередном открытии в них выло пусто.
Спасибо.
Изменено: Sanja - 13.02.2025 09:02:31
 
В модуль листа ЭтаКнига
Код
Option Explicit

Private Sub Workbook_Open()
    Dim sh As Worksheet, cb As CheckBox, cl As Range
    For Each sh In ThisWorkbook.Sheets
        For Each cb In sh.CheckBoxes
            cb.Value = False
        Next
        For Each cl In sh.UsedRange.Cells
            If HasValidation(cl) Then cl.ClearContents
        Next
    Next
End Sub

Private Function HasValidation(cl As Range) As Boolean
    On Error Resume Next
    HasValidation = (cl.Validation.Formula1 <> "")
End Function
 
Цитата
написал:
В модуль листа ЭтаКнигаКодOption Explicit

Private Sub Workbook_Open()
   Dim sh As Worksheet, cb As CheckBox, cl As Range
   For Each sh In ThisWorkbook.Sheets
       For Each cb In sh.CheckBoxes
           cb.Value = False
       Next
       For Each cl In sh.UsedRange.Cells
           If HasValidation(cl) Then cl.ClearContents
       Next
   Next
End Sub

Private Function HasValidation(cl As Range) As Boolean
   On Error Resume Next
   HasValidation = (cl.Validation.Formula1 <> "")
End Function
Большое спасибо!
 
Извиняюсь, но совершенно забыл про еще одно условие!
Есть 2 группы флажков и один отдельный флажок. Нужно чтобы при нажатии на главный флажок "группа 1" или "группа 2" все флажки  в группе включались, при этом флажок 7 должен оставаться "независимым". Спасибо.
PS или лучше завести новую тему?
 
Это в стандартный модуль.
Код
Option Explicit

Sub ChangeGroupItemsCheckBoxesActiveSheet()
    ChangeGroupItemsCheckBoxes ActiveSheet
End Sub

Sub ChangeGroupItemsCheckBoxes(sh As Worksheet)
    Dim shp As Shape, subshp As Shape, ind As Long, iVal As Long
    For Each shp In sh.Shapes
        If shp.Type = msoGroup Then
            ind = 0
            For Each subshp In shp.GroupItems
                ind = ind + 1
                Debug.Print subshp.Name, sh.CheckBoxes(subshp.Name).Value
                If ind = 1 Then
                    iVal = sh.CheckBoxes(subshp.Name).Value
                Else
                    sh.CheckBoxes(subshp.Name).Value = iVal
                End If
            Next
        End If
    Next
End Sub
Чекбоксам "Группа 1" и "Группа 2" назначить макрос ChangeGroupItemsCheckBoxesActiveSheet.
 
Цитата
написал:
Это в стандартный модуль.КодOption Explicit

Sub ChangeGroupItemsCheckBoxesActiveSheet()
   ChangeGroupItemsCheckBoxes ActiveSheet
End Sub

Sub ChangeGroupItemsCheckBoxes(sh As Worksheet)
   Dim shp As Shape, subshp As Shape, ind As Long, iVal As Long
   For Each shp In sh.Shapes
       If shp.Type = msoGroup Then
           ind = 0
           For Each subshp In shp.GroupItems
               ind = ind + 1
               Debug.Print subshp.Name, sh.CheckBoxes(subshp.Name).Value
               If ind = 1 Then
                   iVal = sh.CheckBoxes(subshp.Name).Value
               Else
                   sh.CheckBoxes(subshp.Name).Value = iVal
               End If
           Next
       End If
   Next
End Sub
Чекбоксам "Группа 1" и "Группа 2" назначить макрос ChangeGroupItemsCheckBoxesActiveSheet.
Проблема: 1: при повторном открытии документа чек-боксы в группах 1 и 2 остаются "включенными", как перед выходом. Проблема 2: если активирован "главный" чек-бокс в группе, то значение остальных по отдельности в группе почему-то не меняется.
 
Что-то сделали на так. Приложите файл.
 
Цитата
написал:
Что-то сделали на так. Приложите файл.




 
Цитата
МатросНаЗебре написал: Что-то сделали на так
И название для темы предложите(тут, в сообщении) соответствующее Правилам форума. И цитировать не нужно все подряд - исправьте свои предыдущие сообщения. Спасибо
П.С. сообщение с файлом скрыто до устранения
Согласие есть продукт при полном непротивлении сторон
 
Вариант названия темы
Очистка чекбоксов и диапазонов с проверкой данных при открытии книги
 
Это в стандартный модуль.
Скрытый текст

Это в модуль ЭтаКнига
Скрытый текст
Изменено: МатросНаЗебре - 13.02.2025 09:36:04 ([SPOILER])
 
К сожалению, все равно не работает( в группах чек -боксы меняются все сразу, а по отдельности- нет)
 
Дело не в макросе. Вы неправильно назначили макросы чекбоксам. Надо:
- разгруппировать чекбоксы
- назначить макросы
- заново сгруппировать  
 
Все сделал, как вы сказали, и все ровно не работает((
 
Значит, не сделали.
 
Проблема решилась! Почему-то все заработало, когда я поубирал макросы со всех "не главных" чек-боксов, оставив только один "управляющий".
 
Теперь сделали  :D
Можно убрать, а можно назначить другие макросы. А то, если чекбоксы не связаны с ячейкой, то их наличие смысл теряет.
 
Большое спасибо
 
Здравствуйте. Небольшое продолжение темы.
Условие почти прежнее:    1. чтобы ГРУППЫ чекбоксов 1 и 2 "обнулялись после каждого нового открытия документа, при этом чек №7  сохранял свое состояние.
2. раскрывающиеся СПИСКИ 1 "обнулялись" при каждом новом открытии, а вот СПИСКИ 2 сохраняли выбранные значения.
Спасибо.
Страницы: 1
Читают тему
Наверх