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