2013-11-08 3 views
0

Здесь идет ...использование макросов в защищенном листе - никакие другие ответы найдены

Я создал форму проекта, состоящий из 31 листов в 1 учебном пособии. Рабочий лист 1, называемый «Сводка NOV», является сводной страницей. На остальных 30 листах есть разные детали.

Макросы, которые я создал, связаны с кнопками выбора на 30 листах, которые при выборе места размещения на странице «Резюме резюме».

Эта сводная страница в основном создается и заполняется автоматически, когда пользователь вводит информацию на других листах. Таким образом, я хочу защитить страницу «Резюме NOV», но все еще работает маркос.

Мое знание vba является базовым в лучшем случае, и я не смог его обработать после всех поисков.

Вот пример Маркоса, который я использую ---

Sub спецификатор()

' ' спецификатор Macro ' '

Sheets("NOV Summary").Select 
Range("D4").Select 
ActiveCell.FormulaR1C1 = "Specifier" 
With ActiveCell.Characters(Start:=1, Length:=9).Font 
    .Name = "Calibri" 
    .FontStyle = "Regular" 
    .Size = 11 
    .Strikethrough = False 
    .Superscript = False 
    .Subscript = False 
    .OutlineFont = False 
    .Shadow = False 
    .Underline = xlUnderlineStyleNone 
    .ThemeColor = xlThemeColorLight1 
    .TintAndShade = 0 
    .ThemeFont = xlThemeFontMinor 
End With 
Range("D4").Select 
Sheets("PR1311001").Select 

End Sub

Если вы могли бы помочь с размещением правильного кода, чтобы это произошло, было бы очень признательно ред!

Mnay благодаря

Том

ответ

4

Вы можете снять защиту листа перед запуском макроса, а затем защитить его снова после

Public Sub PasswordTest() 


Dim password As String 
Dim ws As Worksheet 

Set ws = Sheet1 

password = "password123" 

'Check if sheet is protected 
If ws.ProtectContents Then 

    ws.Unprotect password 

End If 

     '******* 
     'put your code here 
     '******* 

'Protect sheet again 
ws.Protect password 


Exit Sub 

'error handling block 
err: 

MsgBox err.Description, "an error occured" 

'if the sheet isn't protected then we should protect it again. 
If ws.ProtectContents = False Then 

    ws.Protect password 

End If 


End Sub 

Как было отмечено в комментариях, вы можете установите параметр UserInterFaceOnly, когда вы защищаете свой лист. Это защитит его, но позволит макросу по-прежнему работать на нем.

ws.Protect Password:=password, UserInterFaceOnly:=True 

Вы можете прочитать об этом здесь ..

http://www.ozgrid.com/VBA/excel-macro-protected-sheet.htm

+1

+ 1 Еще один совет;) Вам не нужно, чтобы защитить/снять защиту листа каждый раз. См. Свойство [UserInterfaceOnly] (http://www.ozgrid.com/VBA/excel-macro-protected-sheet.htm) –

+0

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

+1

@SiddharthRout Я добавил некоторую информацию в ответ, чтобы сделать ее более полной. Спасибо за указатель. – Sam

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