一个朋友突然问我:excel中保护工作表那种功能可不可以用在单元格上,比如只保护某一个单元格。听到这个问题,我的第一感觉,应该可以吧,都有保护工作表的功能了,为什么没有保护单元格的功能啊?但是,接下来的十分钟里,我绞尽脑汁,各种搜索,也没有找到有这么一个功能。不过最后倒是想到一个办法,通过VAB代码动态锁定/解锁工作表的方式来实现锁定任意一个单元格的功能。

举例子了:

比如,我们要锁定A1这个单元格,即,除了A1以外的其他任意单元格都可以编辑,只有A1不能编辑,VBA中如何实现呢?

第一步,选择事件Worksheet_SelectionChange,这个事件的意思是我们在切换单元格的时候触发。

第二步,写一个简单的判断条件,代码如下:

If Target.Row =1 and Target.Column =1 Then

ActiveSheet.protect

Else

ActiveSheet.Unprotect

End If

上述代码的意思是:如果当前获取焦点的单元格是第一行第一列,那么锁定工作表(就是所有的单元格都不能编辑),如果当前获取焦点的单元格不是第一行第一列,那么解锁工作表(就是所有的单元格都可以编辑)。

是不是很简单啊,如果你担心别人修改你的代码,还可以给代码加一个密码:


保护代码


以上,就是Excel保护任意单元格的实现过程。