【发布时间】:2016-10-21 00:04:15
【问题描述】:
我有一个启用宏的工作簿。它具有受保护的工作表和工作簿。 工作簿包括 3 张纸。 Sheet1 命名为 Main Sheet2 命名为 Tab2 Sheet3 命名为 Tab3
我在 Tab2 上禁用了单元格,并且我有一个宏应该提示用户是否启用单元格。如果用户选择“是”,则单元格将被启用,并且“主”工作表上的下拉菜单将更改为是。
宏对我来说很好用。我必须通过电子邮件将工作簿分享给其他用户。
用户将工作簿保存在他的机器上并选择“启用编辑”和“启用宏”。
但是当用户在提示符上单击“确定”时,顶部的工作簿名称显示 XXXX[只读] 和单元格 Tab2 未启用。
我可以选择打开工作簿读/写模式吗?或者对我来说还有什么其他选择可以让保护工作正常吗?
Private Sub Worksheet_Activate()
NotifyUserGeneral
End Sub
Private Sub NotifyUserGeneral()
Dim mMessageDisplayed As Boolean
Dim message As Integer
If ActiveSheet.ProtectContents = True And Not mMessageDisplayed Then
message = MsgBox("Cells are locked on current sheet, press ok to Unlock ", vbOKCancel)
mMessageDisplayed = True
If message = vbOK Then
Sheets("MAIN").Range("G11") = "YES"
Else
Sheets("MAIN").Range("E29") = "NO"
End If
End If
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
End Sub
请建议
【问题讨论】:
-
而不是使用
ActiveSheet尝试ThisWorkbook.Worksheets("Tab2")- 也许它没有在正确的工作表上工作。您的Sheets("MAIN")应该是ThisWorkbook.Sheets("MAIN")- 可能其他用户在代码运行时没有激活工作簿(因此它将在活动工作簿上执行)。 -
@DarrenBartrup-Cook 感谢您的回复!当然,让我试试
-
@DarrenBartrup-Cook it dint 帮助。仍然是同样的问题,当我在消息上单击“确定”时,它不会启用单元格。有其他建议,欢迎
-
您知道,我刚刚意识到 - 如果您按 OK,则您的代码中没有任何内容可以解锁单元格。您需要添加
ActiveSheet.Unprotect才能真正解锁单元格。