0

开始...

我在 1 个工作簿中创建了一个由 31 个工作表组成的项目表单。工作表 1,称为“NOV 摘要”,是一个摘要页面。其他 30 个工作表上都有各种详细信息。

The macros that I have created relate to option buttons on the 30 worksheets that when selected place information on the "NOV Summary" page.

当用户在其他工作表上输入信息时,此摘要页面基本上是自动创建和填写的。因此,我想保护“NOV 摘要”页面,但仍然让 marcos 运行。

我的 vba 知识充其量只是基础知识,经过所有搜索后我无法解决。

这是我正在使用的马科斯的一个例子——

子说明符()

''说明符宏''

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

结束子

如果您可以帮助放置正确的代码以允许这种情况发生,我们将不胜感激!

谢谢

汤姆

4

1 回答 1

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

于 2013-11-08T12:36:06.140 回答