2013-02-18 63 views
1

我已经锁定了几个细胞和工作表,我有工作表宏,但我不能找到一种方法来锁定工作表,并在同一时间运行的宏。每次我尝试运行宏时,它被锁定给我一个错误。锁定Excel工作表具有宏观

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Dim g As Long 
Dim r As Long 
Dim y As Long 
Dim overallhealth As Range 
Dim varaincerange As Range 
Set varaincerange = Sheets("D").Range("B5:B9") 
Set overallhealth = Sheets("D").Range("B4") 
y = Application.WorksheetFunction.CountIf(varaincerange, "y") 
g = Application.WorksheetFunction.CountIf(varaincerange, "g") 
r = Application.WorksheetFunction.CountIf(varaincerange, "r") 
If g = 5 Then 
overallhealth = "G" 
ElseIf g = 4 And y = 1 Then 
overallhealth = "G" 
ElseIf r >= 2 Then 
overallhealth = "R" 
ElseIf y = 1 And r = 1 Then 
overallhealth = "Y" 
ElseIf y > 1 And r >= 1 Then 
overallhealth = "R" 
ElseIf y = 1 And r > 1 Then 
overallhealth = "R" 
ElseIf y >= 3 Then 
overallhealth = "R" 
ElseIf g = 3 And y = 2 Then 
overallhealth = "Y" 
ElseIf g = 4 And r = 1 Then 
overallhealth = "Y" 
End If 
End Sub 

如何在单元格和工作表被锁定和保护的情况下运行宏?

谢谢!

回答

0

您只需在您的宏的开头

Sheets("D").Unprotect "password"

,并在年底取消保护它

Sheets("D").Protect "password"

+0

重新保护它,它给了我一个错误下标超出范围 – Doolie1106 2013-02-18 15:31:38

+0

嗨,对不起它仍然给我1004错误。当我解锁工作表宏运行良好,但是当我使用上面的代码来锁定工作表时,它给了我一个1004错误。 – Doolie1106 2013-02-18 15:43:51

+0

你确定它发生在'.Protect'行吗?如果是这样,工作表的名称是否正确? – 2013-02-18 19:31:55