我有工作簿,工作表/工作簿都受到保护 . 当下拉值为“no”时,我有一个代码来锁定/禁用某些范围的单元格 . 当下拉值为“是”时,我有一个解锁/启用代码,而我想要禁用的下拉值和单元格是不同的床单 .
下载“主表”“子表”上的单元格范围
我还需要在用户点击受保护范围时以及将值设置为“否”时向用户发出提示 .
我在“主页”上使用以下代码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim worksh As Integer
Dim worksheetexists As Boolean
Dim str1 As String
If UCase$(Range("E30").Value) = "YES" Then
Sheets("SubSheet").Select
Sheets("SubSheet").Range("E20:I3019").Locked = False
Sheets("SubSheet").Range("E20:I3019").Activate
Else
Sheets("SubSheet").Range("E20:I3019").Locked = True
End If
End Sub
关注子表上的代码
Private Sub WorkBook_SheetChange(ByVal sh as Object, ByVal Target as Range)
If Intersect (Target, sh.Range("$E$19:$I$3000")) Is Nothing Then Exit Sub
MsgBox "Please select the appropriate dropdown on MAIN Sheet " & Target.Address
With Application
.EnableEvents = False
.UnDo
.EnableEvents = True
End With
End Sub
不确定,我在哪里出错,因为当用户点击受保护的单元格时,它不会抛出提示 .
1 回答
第一 . 你应该删除
Sheets("SubSheet").Select
. 如果您运行代码并且不在工作表内,则可能会发生错误 . 试着做:第二 . 您没有返回目标范围 . 我的意思是你的
Private Sub WorkBook_SheetChange
等待一个ByVal Target
作为参数,你的Private Sub Worksheet_Change
返回任何值 . 它应该是一个返回你为我选择的范围或单元格的函数 .编辑:
和