防止用户编辑单元格和堆栈空间不足错误

时间:2018-10-22 18:34:17

标签: vba

我总共有114行要保护的单元格。每行都包含我要保护的单元格和需要用户数据输入的单元格。

通过使用以下代码,我收到了“堆栈空间不足”的运行时错误。我只是在这里发布部分代码,因为它们太多了,无法在此处发布代码。

似乎我只能保护第1行到第95行的单元格。有人可以帮忙吗?

是否有更好的方法来完成我要完成的任务?

谢谢。

代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Protection for the header fields
If Target.Address = "$A$1" Or Target.Address = "$B$1" Or Target.Address = "$C$1" Or Target.Address = "$D$1" Or Target.Address = "$E$1" Or Target.Address = "$L$1" Then Target.Offset(1, 0).Select
If Target.Address = "$A$2" Or Target.Address = "$C$2" Or Target.Address = "$E$2" Or Target.Address = "$F$2" Then Target.Offset(1, 0).Select
If Target.Address = "$A$3" Or Target.Address = "$B$3" Or Target.Address = "$C$3" Or Target.Address = "$D$3" Or Target.Address = "$E$3" Then Target.Offset(1, 0).Select
If Target.Address = "$F$3" Or Target.Address = "$G$3" Or Target.Address = "$H$3" Or Target.Address = "$I$3" Or Target.Address = "$J$3" Or Target.Address = "$K$3" Or Target.Address = "$L$3" Then Target.Offset(1, 0).Select


If Target.Address = "$A$4" Or Target.Address = "$C$4" Or Target.Address = "$D$4" Or Target.Address = "$L$4" Then Target.Offset(1, 0).Select
If Target.Address = "$F$4" And [$L$2].Value <> "Oph_Phase II_POC" Then Target.Offset(1, 0).Select

If Target.Address = "$A$5" Or Target.Address = "$C$5" Or Target.Address = "$C$5" Or Target.Address = "$F$5" Or Target.Address = "$G$5" Or Target.Address = "$H$5" Or Target.Address = "$I$5" Then Target.Offset(1, 0).Select

'Protection for row # 6
If Target.Address = "$A$7" Or Target.Address = "$C$7" Or Target.Address = "$D$7" Or Target.Address = "$E$7" Or Target.Address = "$F$7" Or Target.Address = "$G$7" Then Target.Offset(1, 0).Select

'Protection for row # 7
If Target.Address = "$A$6" Or Target.Address = "$B$6" Or Target.Address = "$C$6" Or Target.Address = "$D$6" Or Target.Address = "$E$6" Or Target.Address = "$F$6" Or Target.Address = "$G$6" Then Target.Offset(1, 0).Select


'Protection for row # 8
If Target.Address = "$A$8" Or Target.Address = "$B$8" Or Target.Address = "$C$8" Or Target.Address = "$D$8" Or Target.Address = "$E$8" Or Target.Address = "$F$8" Or Target.Address = "$G$8" Then Target.Offset(1, 0).Select

'Protection for row # 9
If Target.Address = "$F$9" Or Target.Address = "$G$9" Then Target.Offset(1, 0).Select
ENd Sub

1 个答案:

答案 0 :(得分:0)

如果您想按范围锁定单元格,也许可以为您提供帮助

https://docs.microsoft.com/en-us/office/vba/api/excel.range.locked