Страницы: 1
RSS
Нельзя установить свойство Hidden класса Range
 
Доброе время суток!
Столкнулся с проблемой при автоматической скрытии файлов, выскакивает сообщение "Нельзя установить свойство 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 

После защите листа, при изменении даты, выскакивает эта пакость....кто-то может помочь поправить код?
 
Снять защиту (Unprotect)
Скрыть/отбразить столбец
Установить защиту  (Protect)
 
Необходимо, чтобы при одетой защите, всё фунициклировало...
 
Все при одетой. В макросе снимать/ставить
 
Нашел в архиве вот такое, но куда это прислюнить не знаю, в VBA совсем не волоку:


Может, кому интересно или поможет в решении ошибки  
"Нельзя установить свойство Hidden класса Range" при скрывании целых колонок через  
.EntireColumn.Hidden = True  
 
Одна из возможных причин (в моем случае)  
Если  скрываемый диапазон содержит большое количество столбцов и в одной из  ячеек этого диапазона есть примечание, которое имеет свойсвто  .Comment.Visible = True  
возможно появление этой ошибки при попытке скрыть такой диапазон.    
Прячем комментарий .Comment.Visible = False и все работает  
 
В сообщении №2 указаны операторы работы с защитой. Перед работой со листом снимаете защиту, после отработки ставите на место.
 
vikttur, Защита с паролем, тогда в макросе его увидеть можно будет, так ведь?
 
Цитата
vikttur написал: В сообщении №2 указаны операторы работы с защитой. Перед работой со листом снимаете защиту, после отработки ставите на место.
подскажите как это прописать в моём случае?
 
А самостоятельно почитать об операторах - никак?
 
vikttur,вроде сделал как писали:
Цитата
vikttur написал:
Снять защиту (Unprotect)Скрыть/отбразить столбецУстановить защиту  (Protect)
но для скрытия и показа нужно пароль ввести, не совсем то что нужно, хотелось, чтобы и скрытие и отображения не запрашивало пароль
 
aequit,спасибо вам большое, немного поправил, как смог разобраться, теперь почти всё работает....вот только сложность выше описанная
 
Цитата
Peet написал:
нужно пароль ввести,
Перед необходимым участком кода прописываете команду для снятия защиты листа на время работы кода:
Код
Worksheets(1).Unprotect Password:="нагоршкесиделкороль"

Здесь Ваш код - делает то, что необходимо.
В конце восстанавливаете защиту:
Код
Worksheets(1).Protect Password:="нагоршкесиделкороль"

Защищаете паролем проект и никто внутрь кода не доберется, Ваши модули (с паролем) не увидит.
 
Доброе время суток
Цитата
Peet написал:
Столбцы скрываются
По крайне мере в Excel 2016, если при защите листа установить галку "форматирование столбцов", то можно будет их скрывать и изменять ширину.
 
Цитата
aequit написал:
Защищаете паролем проект и никто внутрь кода не доберется, Ваши модули (с паролем) не увидит
А вот за это спасибо! Остальное я так  и прописал, разобрался, а вот про это....СПАСИБО!
 
Цитата
aequit написал:
Защищаете паролем проект и никто внутрь кода не доберется, Ваши модули (с паролем) не увидит.
Защита паролем проекта - очень слабая. Легко взламывается. Хотя бы сторонними программами защиту нужно ставить (обсуждения на эту тему на форуме есть).

P.S. И то умельцы справляются )))
Страницы: 1
Наверх