Доброе время суток! Столкнулся с проблемой при автоматической скрытии файлов, выскакивает сообщение "Нельзя установить свойство Hidden класса Range" Столбцы скрываются при изменении даты в ячейке ВС5 прилагаемого примера (меняем месяц, получаем календарь на месяц, лишние дни скрываются, содержимое ячеек очищается). Скрытие столбцов происходит по средствам кода, написанного aequit:
Код
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("BC5")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Dim lLastDay As Long
Dim x As Date
Dim DayinMonth As Long
x = DateAdd("m", 1, Range("BC5"))
lLastDay = DateSerial(Year(x), Month(x), 0)
DayinMonth = Day(lLastDay)
Select Case DayinMonth
Case Is = 31
ActiveSheet.Columns(52).Hidden = False '29
ActiveSheet.Columns(53).Hidden = False '30
ActiveSheet.Columns(54).Hidden = False '31
Case Is = 30
ActiveSheet.Columns(52).Hidden = False '29
ActiveSheet.Columns(53).Hidden = False '30
ActiveSheet.Columns(54).Hidden = True '31
Range("BB12:BB300").ClearContents
Case Is = 29
ActiveSheet.Columns(52).Hidden = False '29
ActiveSheet.Columns(53).Hidden = True '30
ActiveSheet.Columns(54).Hidden = True '31
Range("BA12:BB300").ClearContents
Case Is = 28
ActiveSheet.Columns(52).Hidden = True '29
ActiveSheet.Columns(53).Hidden = True '30
ActiveSheet.Columns(54).Hidden = True '31
Range("AZ12:BB300").ClearContents
End Select
Application.ScreenUpdating = True
End Sub
После защите листа, при изменении даты, выскакивает эта пакость....кто-то может помочь поправить код?
Нашел в архиве вот такое, но куда это прислюнить не знаю, в VBA совсем не волоку:
Может, кому интересно или поможет в решении ошибки "Нельзя установить свойство Hidden класса Range" при скрывании целых колонок через .EntireColumn.Hidden = True
Одна из возможных причин (в моем случае) Если скрываемый диапазон содержит большое количество столбцов и в одной из ячеек этого диапазона есть примечание, которое имеет свойсвто .Comment.Visible = True возможно появление этой ошибки при попытке скрыть такой диапазон. Прячем комментарий .Comment.Visible = False и все работает
aequit написал: Защищаете паролем проект и никто внутрь кода не доберется, Ваши модули (с паролем) не увидит.
Защита паролем проекта - очень слабая. Легко взламывается. Хотя бы сторонними программами защиту нужно ставить (обсуждения на эту тему на форуме есть).