[英]disable the range of cells on another sheet ( say Sheet2) based on the value in the current sheet(say Sheet1)
我正在尝试根据当前工作表(例如Sheet1)中的值来禁用另一工作表(例如Sheet4)上单元格的范围
我试图通过使用工作表更改功能基于sheet1(“ C5”)中的值来禁用sheet4(“ M4,M6,M8,M10,M12”)中的值。
对于Sheet1,我使用了以下代码并获取了错误消息
下标超出范围
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myRng As Range
Dim Cancel As Boolean
If Not Intersect(Target, Me.Range("C5")) Is Nothing Then
Set myRng = ThisWorkbook.Worksheets("Sheet4").Range("M4,M6,M8,M10,M12")
Me.Unprotect Password:=SHEET_PASSWORD
If Me.Range("C5").Value = "Yes" Then
myRng.Locked = False
Else
myRng.Locked = True
ThisWorkbook.Worksheets("Sheet4").Range("M4,M6,M8,M10,M12") = ""
End If
Me.Protect Password:=SHEET_PASSWORD
End If
End Sub
如果我在Sheet1的单元格值C5中选择“是”,则应该启用sheet4中的单元格值(M4,M6,M8,M10,M12)。 如果我在Sheet1的单元格值C5中选择“否”,则应该禁用sheet4中的单元格值(M4,M6,M8,M10,M12)。
我认为这就是您要寻找的。
Private Sub Worksheet_Change(ByVal Target As Range)
If ChangeEventFlag = 0 Then
Dim myRng As Range
Dim Cancel As Boolean
If Not Intersect(Target, Me.Range("C5")) Is Nothing Then
With ThisWorkbook.Worksheets("Sheet4")
.Unprotect Password:="password"
.Cells.Locked = False
Set myRng = .Range("M4,M6,M8,M10,M12")
If Me.Range("C5").Value = "Yes" Then
myRng.Locked = False
Else
myRng.Locked = True
myRng.Value = ""
End If
.Protect Password:="password"
End With
End If
End If
End Sub
注意:
ChangeEventFlag
password
进行测试 采用:
无论粘贴此代码的哪张工作表Range("M4,M6,M8,M10,M12")
如果C5
为“ 否”(实际上是“除”以外的任何内容) ,将锁定Sheet4
Range("M4,M6,M8,M10,M12")
,并且如果C5
为“是” ,则将其解锁
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.