注册 登录
编程论坛 Excel/VBA论坛

vba中如何设置某些区域只能点击,而不能进入编辑状态?

lzcl 发布于 2023-03-29 17:48, 785 次点击
代码小白鼠,目前东拼西凑想达到设置区域能点击选中但不能编辑的效果,但始终达不到效果。如图达到黄色部分能选中不能编辑的效果。求大神帮忙,十万分感谢!!


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
2 回复
#2
阳光上的桥2023-03-31 12:35
正常的做法是设置允许修改的区域(Range)的锁定(Locked)属性为假,然后工作表保护,这样就不需要每次点鼠标的时候判断,因为可能点整行、整列这样包括两类区域的时候。

例如要让G5:J5保护,执行下面的三条语句就可以一劳永逸了:
程序代码:

    Cells.Locked = False
    Range("G5:J5").Locked = True
    ActiveSheet.Protect
#3
阳光上的桥2023-03-31 12:44
如果楼主坚持在点单元格(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
1