如何在Excel工作表中为四列进行动态锁定和解锁

时间:2012-03-14 05:15:48

标签: excel vba

我只考虑Excel表格中的四列(即A,B,C,D),其余所有列都应具有默认值。

我怀疑的是,如果我在这四列的每一行中选择任何单元格,那么剩下的单元格不应该接受任何数据,即那些应该进入锁定模式,这样我想从Excel页面的顶部到底部进行(即这个效果只剩下四列剩下的列应该有默认行为)

2 个答案:

答案 0 :(得分:1)

我已经answered your very similar earlier question了。

在这种情况下,唯一的区别是您希望在除A到D之外的所有其他列中使用“默认行为”。“默认行为”是什么意思?你没有在你的问题中提到这一点。

如果您的意思是用户应该能够在其中输入数据并像往常一样修改它们,并且 已锁定以进行编辑,那么my answer to your earlier question确实会这样做。

如果您的意思是D 之后的所有列都应该被锁定以进行编辑,那么您唯一需要做的就是替换

        .Cells.Locked = False

        .Range("A:D").Locked = False

这将仅解锁列A到D,而将所有其他列锁定。

答案 1 :(得分:0)

我不确定你的意思,但你可以尝试以下方法:

Sub ApplyLock      
  Dim sh as WorkSheet
  set sh = ActiveSheet
  sh.Range(sh.range("E1"),sh.cells(sh.rows.count,sh.cells.count)).Locked = True
  sh.protect userinterfaceonly:=true      
End Sub

编辑:重新阅读后,看起来您可能只想保护前四列。在那种情况下:

Sub ApplyLock      
  Dim sh as WorkSheet
  set sh = ActiveSheet
  sh.Range("A:D").Locked = True
  sh.protect userinterfaceonly:=true
End Sub