Здравствуйте! Суть что хочу сделать: - имеется месяц с 1 по 31 число. - диапазоны группированы т.о. чтобы отдельно можно было вывести/скрыть дату по 28е,29е,30е или 31е число, т.е скрыть/отобразить столбец с датой - 29,30,31 в файле оригинале содержат формулы, в примере не стал их прописывать т.к. это не важно в данном вопросе Нужно защитить ячейки 29,30,31 от редактирования (стирания формул пользователем), но оставить возможность их скрытия путем скрытия соответствующих столбцов. При защите книги не могу скрыть столбцы 29,30,31, получается только защитить ячейки.Есть выход? Если не понятно объяснил выложу оригинал файла.
Здравствуйте! Суть что хочу сделать: - имеется месяц с 1 по 31 число. - диапазоны группированы т.о. чтобы отдельно можно было вывести/скрыть дату по 28е,29е,30е или 31е число, т.е скрыть/отобразить столбец с датой - 29,30,31 в файле оригинале содержат формулы, в примере не стал их прописывать т.к. это не важно в данном вопросе Нужно защитить ячейки 29,30,31 от редактирования (стирания формул пользователем), но оставить возможность их скрытия путем скрытия соответствующих столбцов. При защите книги не могу скрыть столбцы 29,30,31, получается только защитить ячейки.Есть выход? Если не понятно объяснил выложу оригинал файла.NeWru
вариант: При изменении месяца и года (повесить на событие изменения ячеек) вычислить кол-во дней в месяце, далее макрос снимает защиту листа, скрывает ненужные столбцы, ставит защиту обратно. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k1:r1")) Is Nothing Then ActiveSheet.Unprotect Columns("AC:AE").EntireColumn.Hidden = False If [AJ3] < 29 Then Columns("AC").EntireColumn.Hidden = True If [AJ3] < 30 Then Columns("AD").EntireColumn.Hidden = True If [AJ3] < 31 Then Columns("AE").EntireColumn.Hidden = True ActiveSheet.Protect End If End Sub
[/vba]
вариант: При изменении месяца и года (повесить на событие изменения ячеек) вычислить кол-во дней в месяце, далее макрос снимает защиту листа, скрывает ненужные столбцы, ставит защиту обратно. [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("k1:r1")) Is Nothing Then ActiveSheet.Unprotect Columns("AC:AE").EntireColumn.Hidden = False If [AJ3] < 29 Then Columns("AC").EntireColumn.Hidden = True If [AJ3] < 30 Then Columns("AD").EntireColumn.Hidden = True If [AJ3] < 31 Then Columns("AE").EntireColumn.Hidden = True ActiveSheet.Protect End If End Sub
Nic70y, оригинал чуть редактирую, в нем и попробуем макрос, ок? макрос еще не добавлен. Есть только автом вывод кол-ва дней в месяце года и выделение цветом сб и вскр. Т.к. не нашел способ отобразить в графике дату дня в виде числа без точки и была необходимость поиска выходных в цвете, пришлось делать отдельную табличку и из нее вытягивать данные.
Nic70y, оригинал чуть редактирую, в нем и попробуем макрос, ок? макрос еще не добавлен. Есть только автом вывод кол-ва дней в месяце года и выделение цветом сб и вскр. Т.к. не нашел способ отобразить в графике дату дня в виде числа без точки и была необходимость поиска выходных в цвете, пришлось делать отдельную табличку и из нее вытягивать данные.NeWru