Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Excel工作表中实现四栏的动态锁定和解锁_Excel_Vba - Fatal编程技术网

如何在Excel工作表中实现四栏的动态锁定和解锁

如何在Excel工作表中实现四栏的动态锁定和解锁,excel,vba,Excel,Vba,我只考虑了Excel工作表中的四列(即A、B、C、D),其余的所有列本质上都应该是默认的 我的疑问是,如果我在这四列的每一行中选择任何单元格,那么剩余的单元格就不应该接受任何数据,即这些数据应该进入锁定模式,就像我想在Excel页面的上下进行的那样(即,只有四列的这种效果,剩余的列应该有默认行为)我不太清楚您的意思,但您可以尝试以下方法: Sub ApplyLock Dim sh as WorkSheet set sh = ActiveSheet sh.Range(sh.

我只考虑了Excel工作表中的四列(即A、B、C、D),其余的所有列本质上都应该是默认的


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

我不太清楚您的意思,但您可以尝试以下方法:

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
我已经看过了

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

如果您的意思是,用户应该能够在单元格中输入数据,并像往常一样修改它们,而单元格不被锁定以进行编辑,那么确实可以这样做

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

        .Cells.Locked = False


这将仅解锁A到D列,其余所有列将被锁定

可能重复上述JF的评论,我看到你在这里是相当新的。在Stackoverflow中,如果答案适合您,请单击答案左侧的勾号接受答案-有关更多信息,请参阅。你可以回到上一个问题,接受让·弗朗索瓦的回答
        .Range("A:D").Locked = False