Excel 如果另一个单元格不为空,则禁用单元格输入

Excel 如果另一个单元格不为空,则禁用单元格输入,excel,Excel,如果右侧两个单元格(同一行,C列)中有任何内容,如何使范围(“A1:A10”)中的任何单元格不可编辑(无法更改),并在同一行,C列中的单元格变为空后使该单元格再次可编辑。 我尝试了下面的代码,但没有效果,我仍然可以编辑A列中的单元格,即使内容是C列。理想情况下,我希望在不保护工作表的情况下完成 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Not Inters

如果右侧两个单元格(同一行,C列)中有任何内容,如何使范围(“A1:A10”)中的任何单元格不可编辑(无法更改),并在同一行,C列中的单元格变为空后使该单元格再次可编辑。 我尝试了下面的代码,但没有效果,我仍然可以编辑A列中的单元格,即使内容是C列。理想情况下,我希望在不保护工作表的情况下完成

Private Sub Worksheet_Change(ByVal Target As Range)
  Application.EnableEvents = False
  If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
    If Target.Value <> "" Then
      Target.Offset(0, -2).Cells.Locked = True
      ActiveSheet.Protect Contents:=True
    End If
    Application.EnableEvents = True
  End If
End Sub
Private子工作表\u更改(ByVal目标作为范围)
Application.EnableEvents=False
如果不相交(目标,范围(“C1:C10”))则为零
如果Target.Value为“”,则
Target.Offset(0,-2).Cells.Locked=True
ActiveSheet.Protect内容:=True
如果结束
Application.EnableEvents=True
如果结束
端接头
谢谢,,
Jay

您正在检查
Target.Address
是否为空字符串。为什么?这不应该是目标值吗

最重要的是,出了什么问题?您是否使用断点调试了代码?你看到了什么。。。如果我的答案不能满足您的需要,请编辑您的问题并添加所需信息。

选项明确
Option Explicit

'*** Note: I need to reside in the Sheet Module for the
'          sheet I am working on!

'*** Note: Make sure the Locked flags for A1:A10 and
'          C1:C10 are cleared before implementing.

Private Sub Worksheet_Change(ByVal Target As Range)

   Dim rng As Range

   Application.EnableEvents = False  'Turn off Events to prevent loop!
    
    If Not Intersect(Target, Range("C1:C10")) Is Nothing Then
    
      ActiveSheet.Unprotect 'You need to unprotect before proceeding
      
      For Each rng In Target
      
         If rng <> "" Then  'Checking for Target.Address will always have a value!
           rng.Offset(0, -2).Locked = True
         Else
           rng.Offset(0, -2).Locked = False
        End If
      
      Next rng
      
      ActiveSheet.Protect Contents:=True 'Turn Protection back on
      '*** If you have other protected elements DrawingObjects and/or Scenarios
      '    you need to include in line above.
      
  End If
  
 Application.EnableEvents = True  'Re-enable Events
  
End Sub 'Worksheet_Change
'***注意:我需要驻留在 “我正在工作! '***注意:确保A1:A10和 'C1:C10在执行前被清除。 私有子工作表_更改(ByVal目标作为范围) 变暗rng As范围 Application.EnableEvents=False'关闭事件以防止循环! 如果不相交(目标,范围(“C1:C10”))则为零 ActiveSheet.Unprotect'您需要在继续之前取消保护 对于目标中的每个rng 如果rng为“”,则检查Target.Address将始终有一个值! rng.偏移量(0,-2).Locked=True 其他的 rng偏移量(0,-2)。锁定=假 如果结束 下一个rng ActiveSheet.Protect内容:=True“重新启用保护” '***如果您有其他受保护的元素绘制对象和/或场景 “您需要在上面的行中包括。 如果结束 Application.EnableEvents=True“重新启用事件” 结束子工作表\u更改

HTH

请查看,不要忘记阅读和阅读。另外,请查看Hi-HTH中的,以及更多的好信息,它是有效的,但是当我尝试在C列中选择多个单元格时,我得到了一个运行时错误“13”。我需要能够选择多个单元格,以便在选择多个单元格时退出sub不是一个选项。有没有其他方法可以克服这个错误?为什么要选择多个单元格。如果你在做数据输入,你将在C1:10中一次做一个。选择多个单元格的要求是什么?这将如何处理?您好,这张表是我们的is日常操作菜单的一个示例,因此,如果我能够在启动“新的工作日”操作菜单时删除所有条目,这将更容易。我不总是填写相同数量的行。嗨,我是这个网站的新手,我想把这个问题标记为已回答,但不知道如何/在哪里。杰伊,答案左边应该有一个复选标记,点击它就可以了。顺便说一句:HTH是“希望这有帮助”,不是我的缩写。RG