可以根据另一个单元格的值锁定单元格范围?

时间:2017-08-31 17:35:50

标签: excel vba excel-vba excel-formula

我正在使用跟踪器测试新的更改,以及何时。如果新的更改是N / A,我不想删除它,我想禁用(并变为灰色)可用于选择完成日期的所有单元格。但只是在那一排。我尝试使用以下方法,但没有任何运气:

  1. 表单上的条件格式
  2. 进行更改时执行的VBA代码
  3. 数据验证(认为这是可能的,但我不熟悉这是如何工作的)
  4. 这是我的代码:

     Private Sub worksheet_change(ByVal Target As Range)
    
         Dim keycells As Range
    
         Set keycells = Range("G:G")
    
         lastcol = CInt(Sheet1.Cells(1,Sheet1.Columns.Count).End(xlToLeft).Column)
    
         If Not Application.Intersect(keycells, Range(Target.Address)) Is Nothing Then
             r = Range(Target.Address).Row
             MsgBox "There was a change"
             If Range(Target.Address).Value = "N/A" Then
                 MsgBox "we got this far"
                 Range("H" & r & ":" & Cells(r, lastcol).Address).Locked = True
             End If
    
         End If
    
    End Sub
    

    两个消息框都显示,但单元格未锁定。所以我尝试解锁所有细胞,然后保护纸张。然后我将一些东西设置为“N / A”并得到错误“无法设置Range类的Locked属性”。

    以下是我的数据的概念: enter image description here

    提前致谢!

1 个答案:

答案 0 :(得分:0)

嗯, Community 一直坚持(好几天)我看着这个问题,无情地将它推到我的“相关”队列的顶端,可能是因为它被标记为{ {3}}前4个标签, 它在技术上没有答案。

所以,抱歉my,我正在刷你的“评论答案”:

  1. 保护,

  2. 执行Worksheet.Unprotect

  3. 之后运行您的代码(和Worksheet.Protect)。

  4. 更多信息: