| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 638 人关注过本帖
标题:vba中如何设置某些区域只能点击,而不能进入编辑状态?
只看楼主 加入收藏
lzcl
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2023-3-29
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
vba中如何设置某些区域只能点击,而不能进入编辑状态?
代码小白鼠,目前东拼西凑想达到设置区域能点击选中但不能编辑的效果,但始终达不到效果。如图达到黄色部分能选中不能编辑的效果。求大神帮忙,十万分感谢!!


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 1 To 100 Step 1
If Target.Address = Cells(i, 2).Address Then
ActiveSheet.Protect
Else
ActiveSheet.Unprotect
End If
Next i
图片附件: 游客没有浏览图片的权限,请 登录注册
End Sub
搜索更多相关主题的帖子: 效果 vba 区域 点击 编辑 
2023-03-29 17:48
阳光上的桥
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:38
帖 子:129
专家分:772
注 册:2023-1-12
收藏
得分:20 
正常的做法是设置允许修改的区域(Range)的锁定(Locked)属性为假,然后工作表保护,这样就不需要每次点鼠标的时候判断,因为可能点整行、整列这样包括两类区域的时候。

例如要让G5:J5保护,执行下面的三条语句就可以一劳永逸了:
程序代码:
    Cells.Locked = False
    Range("G5:J5").Locked = True
    ActiveSheet.Protect
2023-03-31 12:35
阳光上的桥
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:38
帖 子:129
专家分:772
注 册:2023-1-12
收藏
得分:0 
如果楼主坚持在点单元格(SelectionChange事件)时候进行判断,不应该使用循环,如果点整行整列等区域时,起地址肯定不满足判断要求,解除工作表保护后用户按DEL就删除了全部内容,此时可以选择计算区域(Range)的交集来判断,检查所点Target区域(不一定是单个单元格)是否包含在需要保费的范围内容,例如需要保护G5:J5,那么代码是:

程序代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Range("G5:J5"), Target) Is Nothing Then ActiveSheet.Unprotect Else ActiveSheet.Protect
End Sub
2023-03-31 12:44
快速回复:vba中如何设置某些区域只能点击,而不能进入编辑状态?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015292 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved