有朋友突然问我:excel中保护工作表的功能可以用在单元格上吗,比如只保护某个单元格?听到这个问题的时候,我的第一感觉是应该可以吧。都有保护工作表的功能。为什么没有保护细胞的功能?然而接下来的十几分钟,我绞尽脑汁,搜索这样一个功能。但是,最后我想到了一个方法,用VAB代码动态锁定/解锁工作表来锁定任何单元格。
例如:
比如我们要锁定单元格A1,也就是除了A1之外的其他单元格都可以编辑,但是只有A1不能编辑。我们如何在VBA做到这一点?
第一步是选择事件Worksheet_SelectionChange,这意味着我们在切换单元格时触发。
第二步,用下面的代码写一个简单的判断条件:
如果目标。Row =1和Target。那么Column =1
ActiveSheet.protect
其他
ActiveSheet。撤消保护
如果…就会结束
上面的代码意思是:如果当前聚焦的单元格是第一行第一列,那么锁定工作表(即所有单元格都不能编辑);如果当前聚焦的单元格不是第一行和第一列,则解锁工作表(即所有单元格都可以编辑)。
不是很简单吗?如果你担心别人修改你的代码,你也可以给代码加一个密码:
保护码
以上是Excel保护任意单元格的实现过程。