用vba在worksheet_change事件中如何实现一个单元格区域的值不可更改(只读)

如果在该区域(如[A1:F8])中更改任意一个单元格的值或是将其删除,则弹出一个提示框,并且该单元格的值变成原来的.请问该如何实现呀?谢谢!... 如果在该区域(如[A1:F8])中更改任意一个单元格的值或是将其删除,则弹出一个提示框,并且该单元格的值变成原来的.请问该如何实现呀?谢谢! 展开
 我来答
redgirlajlin
2013-05-08
知道答主
回答量:87
采纳率:0%
帮助的人:36.7万
展开全部
可以用office2007的sheet保护功能,可以保护一段区域不能被修改,还能设置密码。首先sheet全选,右键,设置字体什么的那个选项(具体名字我不知道,我用的日文系统),点开后选最后一个标签"保护",然后把里面唯一的一个复选框的勾去掉。接下来,选中你要保护的区域,右键,把那个保护的勾勾上。然后菜单栏里选择sheet保护,这里可以设置密码,设了密码后只有输入密码才能解除保护。但注意密码别忘记!然后就OK了。
Excel开发
推荐于2016-06-24 · TA获得超过2914个赞
知道大有可为答主
回答量:1989
采纳率:53%
帮助的人:1015万
展开全部
Dim Flag As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Flag = True Then
Flag = False
Exit Sub
End If
If Target.Row >= 1 And Target.Row <= 8 And Target.Column >= 1 And Target.Column <= 6 Then
MsgBox "禁止更改"
SendKeys "^z"
Flag = True
End If
End Sub

'改了一下,刚测试,第一次不能改,第二次能改,所以将上面的代码调整了一下。
'Change事件,不太好搞,因为更改后触发事件,改回来也要触发事件,汗
追问
谢谢你的回答,通过撤销操作的确可以把单元格的值复原,但却响应了两次change事件,请问可不可以在该事件中屏蔽掉所有的键盘输入(同时还要屏蔽掉鼠标的双击响应)以达到不可更改的目的呢?
追答
屏蔽掉所有的键盘输入(同时还要屏蔽掉鼠标的双击响应),这样需要用Hook全局钩子,较麻烦并且易发生意外。我刚改了后的代码应该解决了这个问题,请测试一下。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式