[英]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.