簡體   English   中英

如果相鄰單元格為空,則鎖定一個單元格-Excel VBA

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM