[英]Lock a cell if the adjacent cell is empty - Excel VBA
我想要得到的是,如果“ D4:D14”范圍內的單元格為空,則相鄰單元格將被鎖定。 我的代碼如下,但它不起作用:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Intersect(Range("D4:D14"), Target)
If rng Is Nothing Then
Else
If IsEmpty(Target) Then
rng.Offset(0, 1).Locked = True
Else
rng.Offset(0, 1).Locked = False
End If
End If
End Sub
我想要得到的是,如果“ D4:D14”范圍內的單元格為空 ,則相鄰單元格被鎖定 。
在您的代碼中,如果單元格為空, .Locked
屬性設置為False
而我想您想要相反的設置嗎?
這對我有用
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Whoa
Dim aCell As Range
Application.EnableEvents = False
If Not Intersect(Range("D4:D14"), Target) Is Nothing Then
ActiveSheet.Unprotect "MYPASSWORD" <~~ Change this to the actual password
For Each aCell In Range("D4:D14")
If Len(Trim(aCell.Value)) = 0 Then _
aCell.Offset(, 1).Locked = True Else _
aCell.Offset(, 1).Locked = False
Next
ActiveSheet.Protect "MYPASSWORD" <~~ Change this to the actual password
End If
Letscontinue:
Application.EnableEvents = True
Exit Sub
Whoa:
MsgBox Err.Description
Resume Letscontinue
End Sub
另外,請確保對工作表進行保護以查看鎖定單元的效果。
編輯
問題標題說
如果相鄰單元格為空,則解鎖單元格-Excel VBA
在這種情況下
If Len(Trim(aCell.Value)) = 0 Then _
aCell.Offset(, 1).Locked = True Else _
aCell.Offset(, 1).Locked = False
變
If Len(Trim(aCell.Value)) = 0 Then _
aCell.Offset(, 1).Locked = False Else _
aCell.Offset(, 1).Locked = True
注意:如果上面的代碼仍然不起作用,請在“立即”窗口中鍵入此代碼,然后按Enter鍵
Application.EnableEvents = True
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.