2015-04-24 4 views
0

Я использовал фрагмент кода, который масштабируется, чтобы соответствовать листу в активном окне. Однако, если я добавлю защиту листа, макрос завершится с ошибкой. Чтобы обойти эту проблему, я вызываю суб, чтобы удалить защиту, а затем снова применить защиту. Есть ли способ запустить мой юг, не удаляя и не повторно применяя защиту листа?Экран защиты листа листа Excel

Код для изменения масштаба:

Sub fixScreenSize() 
    Dim rngX As Range 
    Dim myLastCell As Range 
    Dim myLastCellAdd As String 
    Dim rngToZoom As Range  

     'Get address of last cell containing data 
     Set myLastCell = Cells(1, 1).SpecialCells(xlLastCell) 
      myLastCellAdd = Cells(myLastCell.Row, myLastCell.Column).Address 
     'Find keyword in used range 
     Set rngX = Range("A1", myLastCellAdd).Find("myZoomRange", lookat:=xlPart) 
     'Zoom to correct range 
     Range(Cells(1, 1), rngX).Select 
     ActiveWindow.Zoom = True 
     Range("A1").Select 

    Set myLastCell = Nothing 
    Set rngX = Nothing 
End Sub 

ответ

1
  • Удалить все защиты листа
  • Откройте VBE (Alt + F11)
  • Перейти к немедленному окна (Ctrl + G)
  • Тип ActiveSheet.Protect Password:="myPassword", UserInterfaceOnly:=True и нажмите Введите

Активный лист теперь защищен паролем «MyPassword», однако UserInterfaceOnly аргумент означает, что ваш код по-прежнему разрешено работать на этом листе незатронутой защитой листа,

+0

А я об этом не знал. Не нужно было искать его, если честно, я всегда просто защищался, а затем снова подвергался защите. Но спасибо за увеличение моих знаний :) – Sam

+0

А, я вижу, как это работает. Я должен применять защиту для нескольких листов в нескольких книгах, я так понимаю, я могу просто поместить 'UserInterfaceOnly: = True' в мой Sub, который добавляет защиту всем листам. Спасибо :) – sticks

+0

Да - хотя вам больше не нужно запускать этот код, идея заключается в том, что вы используете этот метод защиты один раз. Поскольку ваш код больше не будет сталкиваться с этой ошибкой, нет необходимости повторно защищать каждый раз, когда рабочая книга открывается. –

0

Там нет никакого способа сделать это, что я не знаю, не снимая и заново добавить защиту. После установки защиты нет возможности обойти защиту листа без снятия защиты.

Ваш путь является правильным и не должен влиять на производительность или что-то еще.

EDIT, как выяснилось, есть способ. Однако я всегда делал это без проблем.

+1

Не правда - есть 'UserInterfaceOnly' аргумент может быть задано во время разработки. (Cool name btw;)) –

Смежные вопросы