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

标签 vba excel excel-formula

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

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

  • 这是我的代码:
     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

    提前致谢!

    最佳答案

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

    所以,对不起Moacir ,我正在刷你的“评论答案”:

  • 让它受到保护,
  • Worksheet.Unprotect ,
  • 之后运行您的代码(和 Worksheet.Protect )。


  • 更多信息:
  • 微软:Worksheet.Protect Method (Excel)
  • 微软:Worksheet.Unprotect Method (Excel)
  • 所以。 : How to protect cells in Excel but allow these to be modified by VBA script
  • 关于vba - 可以根据另一个单元格的值锁定单元格范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45987196/

    相关文章:

    vba - Excel VBA 忽略我的 IF 语句退出子进程

    vba - 运行时错误 3021 - 没有当前记录

    vba - 使用复选框选中的值进行计算

    java - 从 Excel 文件读取空单元格时出现异常

    excel - VBA 将复杂的嵌套 IF AND 公式写入工作表

    VBA "ThisWorkbook.Close"不关闭此工作簿!

    vba - 将列公式保留在表标题中

    excel - PowerBI 平均百分比与 Excel 平均百分比不同

    excel - 使用间接引用关闭的 Excel 工作簿中的值?

    vba - excel中12位数字的八进制转二进制