我在重置Cell错误方面做错了什么

时间:2015-08-04 21:21:39

标签: excel vba excel-vba

我是excel编程的新手,我想出一个宏来帮助我验证单元格,如果另一个单元格中的值不允许,则将单元格设置为false

   Private Sub Worksheet_Change(ByVal Target As Range)
 ActiveSheet.Unprotect
Range("W" & (ActiveCell.Row)).Locked = False
Range("Y" & (ActiveCell.Row)).Locked = False
Range("Z" & (ActiveCell.Row)).Locked = False
Range("C" & (ActiveCell.Row)).Locked = False
If Range("U" & (ActiveCell.Row)).Value = "Controlled Good" Then
Range("W" & (ActiveCell.Row)).Locked = True
End If

但是我想将无需单元格的值重置为空,所以我尝试了

 If Range("U" & (ActiveCell.Row)).Value = "Controlled Good" Then
Range("W" & (ActiveCell.Row)).value=""
Range("W" & (ActiveCell.Row)).Locked = True

但我收到错误,我做错了什么?

感谢

2 个答案:

答案 0 :(得分:2)

试试这个

Private Sub Worksheet_Change(ByVal Target As Range)
 With ActiveSheet
        .Unprotect

.Range("W" & (ActiveCell.Row)).Locked = False
.Range("Y" & (ActiveCell.Row)).Locked = False
.Range("Z" & (ActiveCell.Row)).Locked = False
.Range("C" & (ActiveCell.Row)).Locked = False
If .Range("U" & (ActiveCell.Row)).Value = "Controlled Good" Then
.Range("W" & (ActiveCell.Row)).Value = ""
.Range("W" & (ActiveCell.Row)).Locked = True
End IF
        .Protect

    End With


End If

答案 1 :(得分:1)

我们去:) 这也有用

    If Range("U" & (Target.Row)).Value = "Controlled Good" Then
Range("W" & (Target.Row)).Locked = True
 Application.EnableEvents = False
Range("W" & (Target.Row)).Value = ""
Application.EnableEvents = True
End If

感谢MS Excel crashes when vba code runs